aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml2
-rw-r--r--ChangeLog1020
-rw-r--r--LICENSE2
-rw-r--r--Makefile.am15
-rw-r--r--ReleaseNotes1203
-rw-r--r--acinclude.m42
-rwxr-xr-xautogen.sh5
-rw-r--r--changes/bug219004
-rw-r--r--changes/bug230824
-rw-r--r--changes/bug243936
-rw-r--r--changes/bug246613
-rw-r--r--changes/bug258857
-rw-r--r--changes/bug277073
-rw-r--r--changes/bug279295
-rw-r--r--changes/bug285184
-rw-r--r--changes/bug285693
-rw-r--r--changes/bug285914
-rw-r--r--changes/bug286543
-rw-r--r--changes/bug288955
-rw-r--r--changes/bug289384
-rw-r--r--changes/bug289895
-rw-r--r--changes/bug289955
-rw-r--r--changes/bug290614
-rw-r--r--changes/bug290632
-rw-r--r--changes/doc285603
-rw-r--r--changes/doc288054
-rw-r--r--changes/document_version2
-rw-r--r--changes/feature272445
-rw-r--r--changes/feature273674
-rw-r--r--changes/geoip-2019-01-034
-rw-r--r--changes/prop2977
-rw-r--r--changes/subsystems6
-rw-r--r--changes/ticket248053
-rw-r--r--changes/ticket248386
-rw-r--r--changes/ticket251104
-rw-r--r--changes/ticket260692
-rw-r--r--changes/ticket263604
-rw-r--r--changes/ticket267708
-rw-r--r--changes/ticket2716711
-rw-r--r--changes/ticket272255
-rw-r--r--changes/ticket273254
-rw-r--r--changes/ticket273593
-rw-r--r--changes/ticket2740210
-rw-r--r--changes/ticket274906
-rw-r--r--changes/ticket275493
-rw-r--r--changes/ticket276203
-rw-r--r--changes/ticket276254
-rw-r--r--changes/ticket279933
-rw-r--r--changes/ticket280063
-rw-r--r--changes/ticket280073
-rw-r--r--changes/ticket280083
-rw-r--r--changes/ticket280093
-rw-r--r--changes/ticket280103
-rw-r--r--changes/ticket280113
-rw-r--r--changes/ticket280123
-rw-r--r--changes/ticket280773
-rw-r--r--changes/ticket281003
-rw-r--r--changes/ticket281795
-rw-r--r--changes/ticket281803
-rw-r--r--changes/ticket2826610
-rw-r--r--changes/ticket283357
-rw-r--r--changes/ticket283626
-rw-r--r--changes/ticket285513
-rw-r--r--changes/ticket286245
-rw-r--r--changes/ticket286696
-rw-r--r--changes/ticket287575
-rw-r--r--changes/ticket287684
-rw-r--r--changes/ticket288164
-rw-r--r--changes/ticket288393
-rw-r--r--changes/ticket288403
-rw-r--r--changes/ticket288433
-rw-r--r--changes/ticket288463
-rw-r--r--changes/ticket288473
-rw-r--r--changes/ticket288524
-rw-r--r--changes/ticket288533
-rw-r--r--changes/ticket288563
-rw-r--r--changes/ticket290623
-rw-r--r--changes/ticket290653
-rw-r--r--changes/ticket290673
-rw-r--r--changes/ticket290682
-rw-r--r--changes/ticket290702
-rw-r--r--changes/ticket290713
-rw-r--r--changes/ticket294353
-rw-r--r--changes/ticket294364
-rw-r--r--changes/ticket295369
-rw-r--r--configure.ac9
-rwxr-xr-xcontrib/client-tools/torify2
-rwxr-xr-xcontrib/dirauth-tools/nagios-check-tor-authority-cert10
-rwxr-xr-xcontrib/or-tools/check-tor41
-rw-r--r--contrib/win32build/tor-mingw.nsi.in2
-rw-r--r--doc/HACKING/Maintaining.md16
-rw-r--r--doc/tor.1.txt52
-rwxr-xr-xscripts/codegen/gen_server_ciphers.py2
-rwxr-xr-xscripts/codegen/get_mozilla_ciphers.py2
-rw-r--r--scripts/codegen/makedesc.py2
-rwxr-xr-xscripts/maint/annotate_ifdef_directives2
-rw-r--r--scripts/maint/fallback.whitelist1064
-rwxr-xr-xscripts/maint/format_changelog.py4
-rwxr-xr-xscripts/maint/generateFallbackDirLine.py38
-rwxr-xr-xscripts/maint/lintChanges.py56
-rwxr-xr-xscripts/maint/lookupFallbackDirContact.py28
-rwxr-xr-xscripts/maint/pre-commit.git-hook26
-rwxr-xr-xscripts/maint/redox.py2
-rwxr-xr-xscripts/maint/sortChanges.py2
-rwxr-xr-xscripts/maint/updateCopyright.pl4
-rwxr-xr-xscripts/maint/updateFallbackDirs.py2364
-rwxr-xr-xscripts/test/chutney-git-bisect.sh8
-rwxr-xr-xscripts/test/cov-diff3
-rwxr-xr-xscripts/test/cov-test-determinism.sh48
-rwxr-xr-xscripts/test/coverage4
-rw-r--r--src/app/config/config.c33
-rw-r--r--src/app/config/config.h12
-rw-r--r--src/app/config/confparse.c2
-rw-r--r--src/app/config/confparse.h2
-rw-r--r--src/app/config/or_options_st.h5
-rw-r--r--src/app/config/or_state_st.h2
-rw-r--r--src/app/config/statefile.c2
-rw-r--r--src/app/config/statefile.h2
-rw-r--r--src/app/main/main.c12
-rw-r--r--src/app/main/main.h2
-rw-r--r--src/app/main/ntmain.c2
-rw-r--r--src/app/main/ntmain.h2
-rw-r--r--src/app/main/subsysmgr.c2
-rw-r--r--src/app/main/subsysmgr.h2
-rw-r--r--src/app/main/subsystem_list.c2
-rw-r--r--src/app/main/tor_main.c2
-rw-r--r--src/config/geoip22020
-rw-r--r--src/config/geoip62401
-rw-r--r--src/core/crypto/hs_ntor.c2
-rw-r--r--src/core/crypto/hs_ntor.h2
-rw-r--r--src/core/crypto/onion_crypto.c2
-rw-r--r--src/core/crypto/onion_crypto.h2
-rw-r--r--src/core/crypto/onion_fast.c2
-rw-r--r--src/core/crypto/onion_fast.h2
-rw-r--r--src/core/crypto/onion_ntor.c2
-rw-r--r--src/core/crypto/onion_ntor.h2
-rw-r--r--src/core/crypto/onion_tap.c2
-rw-r--r--src/core/crypto/onion_tap.h2
-rw-r--r--src/core/crypto/relay_crypto.c2
-rw-r--r--src/core/crypto/relay_crypto.h2
-rw-r--r--src/core/include.am2
-rw-r--r--src/core/mainloop/connection.c19
-rw-r--r--src/core/mainloop/connection.h4
-rw-r--r--src/core/mainloop/cpuworker.c2
-rw-r--r--src/core/mainloop/cpuworker.h2
-rw-r--r--src/core/mainloop/mainloop.c2
-rw-r--r--src/core/mainloop/mainloop.h2
-rw-r--r--src/core/mainloop/netstatus.c2
-rw-r--r--src/core/mainloop/netstatus.h2
-rw-r--r--src/core/mainloop/periodic.c2
-rw-r--r--src/core/mainloop/periodic.h2
-rw-r--r--src/core/or/addr_policy_st.h2
-rw-r--r--src/core/or/address_set.c2
-rw-r--r--src/core/or/address_set.h2
-rw-r--r--src/core/or/cell_queue_st.h2
-rw-r--r--src/core/or/cell_st.h2
-rw-r--r--src/core/or/channel.c2
-rw-r--r--src/core/or/channel.h2
-rw-r--r--src/core/or/channelpadding.c2
-rw-r--r--src/core/or/channelpadding.h2
-rw-r--r--src/core/or/channeltls.c2
-rw-r--r--src/core/or/channeltls.h2
-rw-r--r--src/core/or/circuit_st.h28
-rw-r--r--src/core/or/circuitbuild.c25
-rw-r--r--src/core/or/circuitbuild.h2
-rw-r--r--src/core/or/circuitlist.c6
-rw-r--r--src/core/or/circuitlist.h2
-rw-r--r--src/core/or/circuitmux.c2
-rw-r--r--src/core/or/circuitmux.h2
-rw-r--r--src/core/or/circuitmux_ewma.c2
-rw-r--r--src/core/or/circuitmux_ewma.h2
-rw-r--r--src/core/or/circuitpadding.c2562
-rw-r--r--src/core/or/circuitpadding.h696
-rw-r--r--src/core/or/circuitstats.c2
-rw-r--r--src/core/or/circuitstats.h2
-rw-r--r--src/core/or/circuituse.c46
-rw-r--r--src/core/or/circuituse.h2
-rw-r--r--src/core/or/command.c2
-rw-r--r--src/core/or/command.h2
-rw-r--r--src/core/or/connection_edge.c7
-rw-r--r--src/core/or/connection_edge.h2
-rw-r--r--src/core/or/connection_or.c2
-rw-r--r--src/core/or/connection_or.h2
-rw-r--r--src/core/or/connection_st.h2
-rw-r--r--src/core/or/cpath_build_state_st.h2
-rw-r--r--src/core/or/crypt_path_reference_st.h2
-rw-r--r--src/core/or/crypt_path_st.h2
-rw-r--r--src/core/or/destroy_cell_queue_st.h2
-rw-r--r--src/core/or/dos.c2
-rw-r--r--src/core/or/dos.h2
-rw-r--r--src/core/or/edge_connection_st.h2
-rw-r--r--src/core/or/entry_connection_st.h2
-rw-r--r--src/core/or/entry_port_cfg_st.h2
-rw-r--r--src/core/or/extend_info_st.h2
-rw-r--r--src/core/or/half_edge_st.h2
-rw-r--r--src/core/or/listener_connection_st.h2
-rw-r--r--src/core/or/ocirc_event.c2
-rw-r--r--src/core/or/ocirc_event.h2
-rw-r--r--src/core/or/ocirc_event_sys.h2
-rw-r--r--src/core/or/onion.c2
-rw-r--r--src/core/or/onion.h2
-rw-r--r--src/core/or/or.h9
-rw-r--r--src/core/or/or_circuit_st.h2
-rw-r--r--src/core/or/or_connection_st.h2
-rw-r--r--src/core/or/or_handshake_certs_st.h2
-rw-r--r--src/core/or/or_handshake_state_st.h2
-rw-r--r--src/core/or/orconn_event.c2
-rw-r--r--src/core/or/orconn_event.h2
-rw-r--r--src/core/or/orconn_event_sys.h2
-rw-r--r--src/core/or/origin_circuit_st.h6
-rw-r--r--src/core/or/policies.c2
-rw-r--r--src/core/or/policies.h2
-rw-r--r--src/core/or/port_cfg_st.h2
-rw-r--r--src/core/or/protover.c9
-rw-r--r--src/core/or/protover.h3
-rw-r--r--src/core/or/protover_rust.c2
-rw-r--r--src/core/or/reasons.c2
-rw-r--r--src/core/or/reasons.h2
-rw-r--r--src/core/or/relay.c38
-rw-r--r--src/core/or/relay.h7
-rw-r--r--src/core/or/relay_crypto_st.h2
-rw-r--r--src/core/or/scheduler.c2
-rw-r--r--src/core/or/scheduler.h2
-rw-r--r--src/core/or/scheduler_kist.c6
-rw-r--r--src/core/or/scheduler_vanilla.c2
-rw-r--r--src/core/or/server_port_cfg_st.h2
-rw-r--r--src/core/or/socks_request_st.h2
-rw-r--r--src/core/or/status.c2
-rw-r--r--src/core/or/status.h2
-rw-r--r--src/core/or/tor_version_st.h2
-rw-r--r--src/core/or/var_cell_st.h2
-rw-r--r--src/core/or/versions.c4
-rw-r--r--src/core/or/versions.h2
-rw-r--r--src/core/proto/proto_cell.c2
-rw-r--r--src/core/proto/proto_cell.h2
-rw-r--r--src/core/proto/proto_control0.c2
-rw-r--r--src/core/proto/proto_control0.h2
-rw-r--r--src/core/proto/proto_ext_or.c2
-rw-r--r--src/core/proto/proto_ext_or.h2
-rw-r--r--src/core/proto/proto_http.c2
-rw-r--r--src/core/proto/proto_http.h2
-rw-r--r--src/core/proto/proto_socks.c14
-rw-r--r--src/core/proto/proto_socks.h2
-rw-r--r--src/ext/ht.h2
-rw-r--r--src/ext/trunnel/trunnel-impl.h2
-rw-r--r--src/ext/trunnel/trunnel.c2
-rw-r--r--src/ext/trunnel/trunnel.h2
-rw-r--r--src/feature/api/tor_api.c2
-rw-r--r--src/feature/api/tor_api.h2
-rw-r--r--src/feature/api/tor_api_internal.h2
-rw-r--r--src/feature/client/addressmap.c2
-rw-r--r--src/feature/client/addressmap.h2
-rw-r--r--src/feature/client/bridges.c2
-rw-r--r--src/feature/client/bridges.h2
-rw-r--r--src/feature/client/circpathbias.c2
-rw-r--r--src/feature/client/circpathbias.h2
-rw-r--r--src/feature/client/dnsserv.c2
-rw-r--r--src/feature/client/dnsserv.h2
-rw-r--r--src/feature/client/entrynodes.c2
-rw-r--r--src/feature/client/entrynodes.h2
-rw-r--r--src/feature/client/transports.c14
-rw-r--r--src/feature/client/transports.h2
-rw-r--r--src/feature/control/btrack.c2
-rw-r--r--src/feature/control/btrack_circuit.c2
-rw-r--r--src/feature/control/btrack_circuit.h2
-rw-r--r--src/feature/control/btrack_orconn.c2
-rw-r--r--src/feature/control/btrack_orconn.h2
-rw-r--r--src/feature/control/btrack_orconn_cevent.c2
-rw-r--r--src/feature/control/btrack_orconn_cevent.h2
-rw-r--r--src/feature/control/btrack_orconn_maps.c2
-rw-r--r--src/feature/control/btrack_orconn_maps.h2
-rw-r--r--src/feature/control/btrack_sys.h2
-rw-r--r--src/feature/control/control.c2
-rw-r--r--src/feature/control/control.h2
-rw-r--r--src/feature/control/control_bootstrap.c4
-rw-r--r--src/feature/control/control_connection_st.h2
-rw-r--r--src/feature/control/fmt_serverstatus.c2
-rw-r--r--src/feature/control/fmt_serverstatus.h2
-rw-r--r--src/feature/control/getinfo_geoip.h2
-rw-r--r--src/feature/dirauth/authmode.c2
-rw-r--r--src/feature/dirauth/authmode.h2
-rw-r--r--src/feature/dirauth/bwauth.c30
-rw-r--r--src/feature/dirauth/bwauth.h6
-rw-r--r--src/feature/dirauth/dircollate.c2
-rw-r--r--src/feature/dirauth/dircollate.h2
-rw-r--r--src/feature/dirauth/dirvote.c42
-rw-r--r--src/feature/dirauth/dirvote.h2
-rw-r--r--src/feature/dirauth/dsigs_parse.c2
-rw-r--r--src/feature/dirauth/dsigs_parse.h2
-rw-r--r--src/feature/dirauth/guardfraction.c2
-rw-r--r--src/feature/dirauth/guardfraction.h2
-rw-r--r--src/feature/dirauth/keypin.c2
-rw-r--r--src/feature/dirauth/keypin.h2
-rw-r--r--src/feature/dirauth/ns_detached_signatures_st.h2
-rw-r--r--src/feature/dirauth/process_descs.c2
-rw-r--r--src/feature/dirauth/process_descs.h2
-rw-r--r--src/feature/dirauth/reachability.c2
-rw-r--r--src/feature/dirauth/reachability.h2
-rw-r--r--src/feature/dirauth/recommend_pkg.c2
-rw-r--r--src/feature/dirauth/recommend_pkg.h2
-rw-r--r--src/feature/dirauth/shared_random.c2
-rw-r--r--src/feature/dirauth/shared_random.h2
-rw-r--r--src/feature/dirauth/shared_random_state.c2
-rw-r--r--src/feature/dirauth/shared_random_state.h2
-rw-r--r--src/feature/dirauth/vote_microdesc_hash_st.h2
-rw-r--r--src/feature/dirauth/voteflags.c2
-rw-r--r--src/feature/dirauth/voteflags.h2
-rw-r--r--src/feature/dircache/cached_dir_st.h2
-rw-r--r--src/feature/dircache/conscache.c2
-rw-r--r--src/feature/dircache/conscache.h2
-rw-r--r--src/feature/dircache/consdiffmgr.c2
-rw-r--r--src/feature/dircache/consdiffmgr.h2
-rw-r--r--src/feature/dircache/dircache.c30
-rw-r--r--src/feature/dircache/dircache.h2
-rw-r--r--src/feature/dircache/dirserv.c22
-rw-r--r--src/feature/dircache/dirserv.h2
-rw-r--r--src/feature/dirclient/dir_server_st.h2
-rw-r--r--src/feature/dirclient/dirclient.c2
-rw-r--r--src/feature/dirclient/dirclient.h2
-rw-r--r--src/feature/dirclient/dlstatus.c2
-rw-r--r--src/feature/dirclient/dlstatus.h2
-rw-r--r--src/feature/dirclient/download_status_st.h2
-rw-r--r--src/feature/dircommon/consdiff.c2
-rw-r--r--src/feature/dircommon/consdiff.h2
-rw-r--r--src/feature/dircommon/dir_connection_st.h2
-rw-r--r--src/feature/dircommon/directory.c2
-rw-r--r--src/feature/dircommon/directory.h2
-rw-r--r--src/feature/dircommon/fp_pair.c2
-rw-r--r--src/feature/dircommon/fp_pair.h2
-rw-r--r--src/feature/dircommon/vote_timing_st.h2
-rw-r--r--src/feature/dircommon/voting_schedule.c2
-rw-r--r--src/feature/dircommon/voting_schedule.h2
-rw-r--r--src/feature/dirparse/authcert_parse.c2
-rw-r--r--src/feature/dirparse/authcert_parse.h2
-rw-r--r--src/feature/dirparse/microdesc_parse.c2
-rw-r--r--src/feature/dirparse/microdesc_parse.h2
-rw-r--r--src/feature/dirparse/ns_parse.c2
-rw-r--r--src/feature/dirparse/ns_parse.h2
-rw-r--r--src/feature/dirparse/parsecommon.c2
-rw-r--r--src/feature/dirparse/parsecommon.h2
-rw-r--r--src/feature/dirparse/policy_parse.c2
-rw-r--r--src/feature/dirparse/policy_parse.h2
-rw-r--r--src/feature/dirparse/routerparse.c2
-rw-r--r--src/feature/dirparse/routerparse.h2
-rw-r--r--src/feature/dirparse/sigcommon.c2
-rw-r--r--src/feature/dirparse/sigcommon.h2
-rw-r--r--src/feature/dirparse/signing.c2
-rw-r--r--src/feature/dirparse/signing.h2
-rw-r--r--src/feature/dirparse/unparseable.c2
-rw-r--r--src/feature/dirparse/unparseable.h2
-rw-r--r--src/feature/hibernate/hibernate.c5
-rw-r--r--src/feature/hibernate/hibernate.h2
-rw-r--r--src/feature/hs/hs_cache.c6
-rw-r--r--src/feature/hs/hs_cache.h2
-rw-r--r--src/feature/hs/hs_cell.c2
-rw-r--r--src/feature/hs/hs_cell.h2
-rw-r--r--src/feature/hs/hs_circuit.c2
-rw-r--r--src/feature/hs/hs_circuit.h2
-rw-r--r--src/feature/hs/hs_circuitmap.c2
-rw-r--r--src/feature/hs/hs_circuitmap.h2
-rw-r--r--src/feature/hs/hs_client.c8
-rw-r--r--src/feature/hs/hs_client.h2
-rw-r--r--src/feature/hs/hs_common.c2
-rw-r--r--src/feature/hs/hs_common.h2
-rw-r--r--src/feature/hs/hs_config.c2
-rw-r--r--src/feature/hs/hs_config.h2
-rw-r--r--src/feature/hs/hs_control.c2
-rw-r--r--src/feature/hs/hs_control.h2
-rw-r--r--src/feature/hs/hs_descriptor.c2
-rw-r--r--src/feature/hs/hs_descriptor.h2
-rw-r--r--src/feature/hs/hs_ident.c2
-rw-r--r--src/feature/hs/hs_ident.h2
-rw-r--r--src/feature/hs/hs_intropoint.c2
-rw-r--r--src/feature/hs/hs_intropoint.h2
-rw-r--r--src/feature/hs/hs_service.c2
-rw-r--r--src/feature/hs/hs_service.h2
-rw-r--r--src/feature/hs/hs_stats.c2
-rw-r--r--src/feature/hs/hs_stats.h2
-rw-r--r--src/feature/hs/hsdir_index_st.h2
-rw-r--r--src/feature/hs_common/replaycache.c2
-rw-r--r--src/feature/hs_common/replaycache.h2
-rw-r--r--src/feature/hs_common/shared_random_client.c2
-rw-r--r--src/feature/hs_common/shared_random_client.h2
-rw-r--r--src/feature/keymgt/loadkey.c2
-rw-r--r--src/feature/keymgt/loadkey.h2
-rw-r--r--src/feature/nodelist/authcert.c2
-rw-r--r--src/feature/nodelist/authcert.h2
-rw-r--r--src/feature/nodelist/authority_cert_st.h2
-rw-r--r--src/feature/nodelist/desc_store_st.h2
-rw-r--r--src/feature/nodelist/describe.c2
-rw-r--r--src/feature/nodelist/describe.h2
-rw-r--r--src/feature/nodelist/dirlist.c2
-rw-r--r--src/feature/nodelist/dirlist.h2
-rw-r--r--src/feature/nodelist/document_signature_st.h2
-rw-r--r--src/feature/nodelist/extrainfo_st.h2
-rw-r--r--src/feature/nodelist/fmt_routerstatus.c2
-rw-r--r--src/feature/nodelist/fmt_routerstatus.h2
-rw-r--r--src/feature/nodelist/microdesc.c2
-rw-r--r--src/feature/nodelist/microdesc.h2
-rw-r--r--src/feature/nodelist/microdesc_st.h2
-rw-r--r--src/feature/nodelist/networkstatus.c89
-rw-r--r--src/feature/nodelist/networkstatus.h2
-rw-r--r--src/feature/nodelist/networkstatus_sr_info_st.h2
-rw-r--r--src/feature/nodelist/networkstatus_st.h5
-rw-r--r--src/feature/nodelist/networkstatus_voter_info_st.h2
-rw-r--r--src/feature/nodelist/nickname.c2
-rw-r--r--src/feature/nodelist/nickname.h2
-rw-r--r--src/feature/nodelist/node_select.c2
-rw-r--r--src/feature/nodelist/node_select.h2
-rw-r--r--src/feature/nodelist/node_st.h2
-rw-r--r--src/feature/nodelist/nodefamily.c2
-rw-r--r--src/feature/nodelist/nodefamily.h2
-rw-r--r--src/feature/nodelist/nodefamily_st.h2
-rw-r--r--src/feature/nodelist/nodelist.c6
-rw-r--r--src/feature/nodelist/nodelist.h2
-rw-r--r--src/feature/nodelist/routerinfo.c2
-rw-r--r--src/feature/nodelist/routerinfo.h2
-rw-r--r--src/feature/nodelist/routerinfo_st.h2
-rw-r--r--src/feature/nodelist/routerlist.c4
-rw-r--r--src/feature/nodelist/routerlist.h2
-rw-r--r--src/feature/nodelist/routerlist_st.h2
-rw-r--r--src/feature/nodelist/routerset.c2
-rw-r--r--src/feature/nodelist/routerset.h2
-rw-r--r--src/feature/nodelist/routerstatus_st.h2
-rw-r--r--src/feature/nodelist/signed_descriptor_st.h2
-rw-r--r--src/feature/nodelist/torcert.c2
-rw-r--r--src/feature/nodelist/torcert.h2
-rw-r--r--src/feature/nodelist/vote_routerstatus_st.h2
-rw-r--r--src/feature/relay/dns.c2
-rw-r--r--src/feature/relay/dns.h2
-rw-r--r--src/feature/relay/dns_structs.h2
-rw-r--r--src/feature/relay/ext_orport.c2
-rw-r--r--src/feature/relay/ext_orport.h2
-rw-r--r--src/feature/relay/onion_queue.c2
-rw-r--r--src/feature/relay/onion_queue.h2
-rw-r--r--src/feature/relay/router.c2
-rw-r--r--src/feature/relay/router.h2
-rw-r--r--src/feature/relay/routerkeys.c2
-rw-r--r--src/feature/relay/routerkeys.h2
-rw-r--r--src/feature/relay/routermode.c2
-rw-r--r--src/feature/relay/routermode.h2
-rw-r--r--src/feature/relay/selftest.c2
-rw-r--r--src/feature/relay/selftest.h2
-rw-r--r--src/feature/rend/rend_authorized_client_st.h2
-rw-r--r--src/feature/rend/rend_encoded_v2_service_descriptor_st.h2
-rw-r--r--src/feature/rend/rend_intro_point_st.h2
-rw-r--r--src/feature/rend/rend_service_descriptor_st.h2
-rw-r--r--src/feature/rend/rendcache.c2
-rw-r--r--src/feature/rend/rendcache.h2
-rw-r--r--src/feature/rend/rendclient.c2
-rw-r--r--src/feature/rend/rendclient.h2
-rw-r--r--src/feature/rend/rendcommon.c2
-rw-r--r--src/feature/rend/rendcommon.h2
-rw-r--r--src/feature/rend/rendmid.c8
-rw-r--r--src/feature/rend/rendmid.h2
-rw-r--r--src/feature/rend/rendparse.c2
-rw-r--r--src/feature/rend/rendparse.h2
-rw-r--r--src/feature/rend/rendservice.c2
-rw-r--r--src/feature/rend/rendservice.h2
-rw-r--r--src/feature/stats/geoip_stats.c2
-rw-r--r--src/feature/stats/geoip_stats.h2
-rw-r--r--src/feature/stats/predict_ports.c2
-rw-r--r--src/feature/stats/predict_ports.h2
-rw-r--r--src/feature/stats/rephist.c37
-rw-r--r--src/feature/stats/rephist.h2
-rw-r--r--src/lib/arch/bytes.h2
-rw-r--r--src/lib/buf/buffers.c2
-rw-r--r--src/lib/buf/buffers.h2
-rw-r--r--src/lib/cc/compat_compiler.h2
-rw-r--r--src/lib/cc/torint.h2
-rw-r--r--src/lib/compress/compress.c2
-rw-r--r--src/lib/compress/compress.h2
-rw-r--r--src/lib/compress/compress_buf.c2
-rw-r--r--src/lib/compress/compress_lzma.c2
-rw-r--r--src/lib/compress/compress_lzma.h2
-rw-r--r--src/lib/compress/compress_none.c2
-rw-r--r--src/lib/compress/compress_none.h2
-rw-r--r--src/lib/compress/compress_sys.h2
-rw-r--r--src/lib/compress/compress_zlib.c2
-rw-r--r--src/lib/compress/compress_zlib.h2
-rw-r--r--src/lib/compress/compress_zstd.c2
-rw-r--r--src/lib/compress/compress_zstd.h2
-rw-r--r--src/lib/container/bitarray.h2
-rw-r--r--src/lib/container/bloomfilt.c2
-rw-r--r--src/lib/container/bloomfilt.h2
-rw-r--r--src/lib/container/handles.h2
-rw-r--r--src/lib/container/map.c2
-rw-r--r--src/lib/container/map.h2
-rw-r--r--src/lib/container/order.c2
-rw-r--r--src/lib/container/order.h2
-rw-r--r--src/lib/container/smartlist.c2
-rw-r--r--src/lib/container/smartlist.h2
-rw-r--r--src/lib/crypt_ops/aes.h2
-rw-r--r--src/lib/crypt_ops/aes_nss.c2
-rw-r--r--src/lib/crypt_ops/aes_openssl.c4
-rw-r--r--src/lib/crypt_ops/compat_openssl.h2
-rw-r--r--src/lib/crypt_ops/crypto_cipher.c2
-rw-r--r--src/lib/crypt_ops/crypto_cipher.h2
-rw-r--r--src/lib/crypt_ops/crypto_curve25519.c2
-rw-r--r--src/lib/crypt_ops/crypto_curve25519.h2
-rw-r--r--src/lib/crypt_ops/crypto_dh.c2
-rw-r--r--src/lib/crypt_ops/crypto_dh.h2
-rw-r--r--src/lib/crypt_ops/crypto_dh_nss.c2
-rw-r--r--src/lib/crypt_ops/crypto_dh_openssl.c2
-rw-r--r--src/lib/crypt_ops/crypto_digest.c2
-rw-r--r--src/lib/crypt_ops/crypto_digest.h2
-rw-r--r--src/lib/crypt_ops/crypto_ed25519.c2
-rw-r--r--src/lib/crypt_ops/crypto_ed25519.h2
-rw-r--r--src/lib/crypt_ops/crypto_format.c2
-rw-r--r--src/lib/crypt_ops/crypto_format.h2
-rw-r--r--src/lib/crypt_ops/crypto_hkdf.c3
-rw-r--r--src/lib/crypt_ops/crypto_hkdf.h2
-rw-r--r--src/lib/crypt_ops/crypto_init.c9
-rw-r--r--src/lib/crypt_ops/crypto_init.h2
-rw-r--r--src/lib/crypt_ops/crypto_nss_mgt.c2
-rw-r--r--src/lib/crypt_ops/crypto_nss_mgt.h2
-rw-r--r--src/lib/crypt_ops/crypto_ope.c2
-rw-r--r--src/lib/crypt_ops/crypto_ope.h2
-rw-r--r--src/lib/crypt_ops/crypto_openssl_mgt.c2
-rw-r--r--src/lib/crypt_ops/crypto_openssl_mgt.h4
-rw-r--r--src/lib/crypt_ops/crypto_pwbox.c2
-rw-r--r--src/lib/crypt_ops/crypto_pwbox.h2
-rw-r--r--src/lib/crypt_ops/crypto_rand.c115
-rw-r--r--src/lib/crypt_ops/crypto_rand.h44
-rw-r--r--src/lib/crypt_ops/crypto_rand_fast.c328
-rw-r--r--src/lib/crypt_ops/crypto_rand_numeric.c166
-rw-r--r--src/lib/crypt_ops/crypto_rsa.c40
-rw-r--r--src/lib/crypt_ops/crypto_rsa.h2
-rw-r--r--src/lib/crypt_ops/crypto_rsa_nss.c2
-rw-r--r--src/lib/crypt_ops/crypto_rsa_openssl.c2
-rw-r--r--src/lib/crypt_ops/crypto_s2k.c2
-rw-r--r--src/lib/crypt_ops/crypto_s2k.h2
-rw-r--r--src/lib/crypt_ops/crypto_sys.h2
-rw-r--r--src/lib/crypt_ops/crypto_util.c2
-rw-r--r--src/lib/crypt_ops/crypto_util.h2
-rw-r--r--src/lib/crypt_ops/digestset.c2
-rw-r--r--src/lib/crypt_ops/digestset.h2
-rw-r--r--src/lib/crypt_ops/include.am2
-rw-r--r--src/lib/ctime/di_ops.c2
-rw-r--r--src/lib/ctime/di_ops.h2
-rw-r--r--src/lib/defs/dh_sizes.h2
-rw-r--r--src/lib/defs/digest_sizes.h2
-rw-r--r--src/lib/defs/include.am1
-rw-r--r--src/lib/defs/time.h23
-rw-r--r--src/lib/defs/x25519_sizes.h2
-rw-r--r--src/lib/encoding/binascii.c2
-rw-r--r--src/lib/encoding/binascii.h2
-rw-r--r--src/lib/encoding/confline.c2
-rw-r--r--src/lib/encoding/confline.h2
-rw-r--r--src/lib/encoding/cstring.c2
-rw-r--r--src/lib/encoding/cstring.h2
-rw-r--r--src/lib/encoding/keyval.c2
-rw-r--r--src/lib/encoding/keyval.h2
-rw-r--r--src/lib/encoding/kvline.c2
-rw-r--r--src/lib/encoding/kvline.h2
-rw-r--r--src/lib/encoding/pem.c2
-rw-r--r--src/lib/encoding/pem.h2
-rw-r--r--src/lib/encoding/time_fmt.c6
-rw-r--r--src/lib/encoding/time_fmt.h2
-rw-r--r--src/lib/err/backtrace.c2
-rw-r--r--src/lib/err/backtrace.h2
-rw-r--r--src/lib/err/torerr.c2
-rw-r--r--src/lib/err/torerr.h2
-rw-r--r--src/lib/err/torerr_sys.c2
-rw-r--r--src/lib/err/torerr_sys.h2
-rw-r--r--src/lib/evloop/compat_libevent.c2
-rw-r--r--src/lib/evloop/compat_libevent.h2
-rw-r--r--src/lib/evloop/procmon.c2
-rw-r--r--src/lib/evloop/procmon.h2
-rw-r--r--src/lib/evloop/timers.c2
-rw-r--r--src/lib/evloop/timers.h2
-rw-r--r--src/lib/evloop/token_bucket.c2
-rw-r--r--src/lib/evloop/token_bucket.h2
-rw-r--r--src/lib/evloop/workqueue.h2
-rw-r--r--src/lib/fdio/fdio.c2
-rw-r--r--src/lib/fdio/fdio.h2
-rw-r--r--src/lib/fs/conffile.c2
-rw-r--r--src/lib/fs/conffile.h2
-rw-r--r--src/lib/fs/dir.c2
-rw-r--r--src/lib/fs/dir.h2
-rw-r--r--src/lib/fs/files.c2
-rw-r--r--src/lib/fs/files.h2
-rw-r--r--src/lib/fs/freespace.c2
-rw-r--r--src/lib/fs/lockfile.c2
-rw-r--r--src/lib/fs/lockfile.h2
-rw-r--r--src/lib/fs/mmap.c2
-rw-r--r--src/lib/fs/mmap.h2
-rw-r--r--src/lib/fs/path.c2
-rw-r--r--src/lib/fs/path.h2
-rw-r--r--src/lib/fs/storagedir.c2
-rw-r--r--src/lib/fs/storagedir.h2
-rw-r--r--src/lib/fs/userdb.c2
-rw-r--r--src/lib/fs/userdb.h2
-rw-r--r--src/lib/fs/winlib.c2
-rw-r--r--src/lib/fs/winlib.h2
-rw-r--r--src/lib/geoip/country.h2
-rw-r--r--src/lib/geoip/geoip.c2
-rw-r--r--src/lib/geoip/geoip.h2
-rw-r--r--src/lib/intmath/addsub.c2
-rw-r--r--src/lib/intmath/addsub.h2
-rw-r--r--src/lib/intmath/bits.c2
-rw-r--r--src/lib/intmath/bits.h2
-rw-r--r--src/lib/intmath/cmp.h2
-rw-r--r--src/lib/intmath/logic.h2
-rw-r--r--src/lib/intmath/muldiv.c2
-rw-r--r--src/lib/intmath/muldiv.h2
-rw-r--r--src/lib/intmath/weakrng.c2
-rw-r--r--src/lib/intmath/weakrng.h2
-rw-r--r--src/lib/lock/compat_mutex.c2
-rw-r--r--src/lib/lock/compat_mutex.h2
-rw-r--r--src/lib/lock/compat_mutex_pthreads.c2
-rw-r--r--src/lib/lock/compat_mutex_winthreads.c2
-rw-r--r--src/lib/log/escape.c2
-rw-r--r--src/lib/log/escape.h2
-rw-r--r--src/lib/log/log.c2
-rw-r--r--src/lib/log/log.h2
-rw-r--r--src/lib/log/log_sys.c2
-rw-r--r--src/lib/log/log_sys.h2
-rw-r--r--src/lib/log/ratelim.c2
-rw-r--r--src/lib/log/ratelim.h2
-rw-r--r--src/lib/log/util_bug.c2
-rw-r--r--src/lib/log/util_bug.h2
-rw-r--r--src/lib/log/win32err.c2
-rw-r--r--src/lib/log/win32err.h2
-rw-r--r--src/lib/malloc/include.am6
-rw-r--r--src/lib/malloc/malloc.c2
-rw-r--r--src/lib/malloc/malloc.h2
-rw-r--r--src/lib/malloc/map_anon.c213
-rw-r--r--src/lib/malloc/map_anon.h37
-rw-r--r--src/lib/math/.may_include2
-rw-r--r--src/lib/math/fp.c27
-rw-r--r--src/lib/math/fp.h3
-rw-r--r--src/lib/math/include.am6
-rw-r--r--src/lib/math/laplace.c2
-rw-r--r--src/lib/math/laplace.h2
-rw-r--r--src/lib/math/prob_distr.c1717
-rw-r--r--src/lib/math/prob_distr.h158
-rw-r--r--src/lib/memarea/memarea.c2
-rw-r--r--src/lib/memarea/memarea.h2
-rw-r--r--src/lib/meminfo/meminfo.c8
-rw-r--r--src/lib/meminfo/meminfo.h2
-rw-r--r--src/lib/net/address.c2
-rw-r--r--src/lib/net/address.h2
-rw-r--r--src/lib/net/alertsock.c2
-rw-r--r--src/lib/net/alertsock.h2
-rw-r--r--src/lib/net/buffers_net.c2
-rw-r--r--src/lib/net/buffers_net.h2
-rw-r--r--src/lib/net/gethostname.c2
-rw-r--r--src/lib/net/gethostname.h2
-rw-r--r--src/lib/net/inaddr.c2
-rw-r--r--src/lib/net/inaddr.h2
-rw-r--r--src/lib/net/inaddr_st.h2
-rw-r--r--src/lib/net/nettypes.h2
-rw-r--r--src/lib/net/network_sys.c2
-rw-r--r--src/lib/net/network_sys.h2
-rw-r--r--src/lib/net/resolve.c2
-rw-r--r--src/lib/net/resolve.h2
-rw-r--r--src/lib/net/socket.c6
-rw-r--r--src/lib/net/socket.h2
-rw-r--r--src/lib/net/socketpair.c9
-rw-r--r--src/lib/net/socketpair.h2
-rw-r--r--src/lib/net/socks5_status.h2
-rw-r--r--src/lib/osinfo/uname.c2
-rw-r--r--src/lib/osinfo/uname.h2
-rw-r--r--src/lib/process/daemon.c2
-rw-r--r--src/lib/process/daemon.h2
-rw-r--r--src/lib/process/env.c2
-rw-r--r--src/lib/process/env.h2
-rw-r--r--src/lib/process/pidfile.c2
-rw-r--r--src/lib/process/pidfile.h2
-rw-r--r--src/lib/process/process.c2
-rw-r--r--src/lib/process/process.h2
-rw-r--r--src/lib/process/process_sys.c2
-rw-r--r--src/lib/process/process_sys.h2
-rw-r--r--src/lib/process/process_unix.c2
-rw-r--r--src/lib/process/process_unix.h2
-rw-r--r--src/lib/process/process_win32.c2
-rw-r--r--src/lib/process/process_win32.h2
-rw-r--r--src/lib/process/restrict.c2
-rw-r--r--src/lib/process/restrict.h2
-rw-r--r--src/lib/process/setuid.c2
-rw-r--r--src/lib/process/setuid.h2
-rw-r--r--src/lib/process/waitpid.c2
-rw-r--r--src/lib/process/waitpid.h2
-rw-r--r--src/lib/process/winprocess_sys.c2
-rw-r--r--src/lib/process/winprocess_sys.h2
-rw-r--r--src/lib/sandbox/sandbox.c8
-rw-r--r--src/lib/sandbox/sandbox.h2
-rw-r--r--src/lib/smartlist_core/smartlist_core.c2
-rw-r--r--src/lib/smartlist_core/smartlist_core.h2
-rw-r--r--src/lib/smartlist_core/smartlist_foreach.h15
-rw-r--r--src/lib/smartlist_core/smartlist_split.c2
-rw-r--r--src/lib/smartlist_core/smartlist_split.h2
-rw-r--r--src/lib/string/compat_ctype.c2
-rw-r--r--src/lib/string/compat_ctype.h2
-rw-r--r--src/lib/string/compat_string.c2
-rw-r--r--src/lib/string/compat_string.h2
-rw-r--r--src/lib/string/parse_int.c2
-rw-r--r--src/lib/string/parse_int.h2
-rw-r--r--src/lib/string/printf.c2
-rw-r--r--src/lib/string/printf.h2
-rw-r--r--src/lib/string/scanf.c2
-rw-r--r--src/lib/string/scanf.h2
-rw-r--r--src/lib/string/util_string.c2
-rw-r--r--src/lib/string/util_string.h2
-rw-r--r--src/lib/subsys/subsys.h2
-rw-r--r--src/lib/term/getpass.c2
-rw-r--r--src/lib/term/getpass.h2
-rw-r--r--src/lib/testsupport/testsupport.h2
-rw-r--r--src/lib/thread/compat_pthreads.c2
-rw-r--r--src/lib/thread/compat_threads.c2
-rw-r--r--src/lib/thread/compat_winthreads.c2
-rw-r--r--src/lib/thread/numcpus.c2
-rw-r--r--src/lib/thread/numcpus.h2
-rw-r--r--src/lib/thread/thread_sys.h2
-rw-r--r--src/lib/thread/threads.h2
-rw-r--r--src/lib/time/.may_include1
-rw-r--r--src/lib/time/compat_time.c6
-rw-r--r--src/lib/time/compat_time.h4
-rw-r--r--src/lib/time/time_sys.c2
-rw-r--r--src/lib/time/time_sys.h2
-rw-r--r--src/lib/time/tvdiff.c5
-rw-r--r--src/lib/time/tvdiff.h2
-rw-r--r--src/lib/tls/buffers_tls.c2
-rw-r--r--src/lib/tls/buffers_tls.h2
-rw-r--r--src/lib/tls/nss_countbytes.c2
-rw-r--r--src/lib/tls/nss_countbytes.h2
-rw-r--r--src/lib/tls/tortls.c2
-rw-r--r--src/lib/tls/tortls.h2
-rw-r--r--src/lib/tls/tortls_internal.h2
-rw-r--r--src/lib/tls/tortls_nss.c2
-rw-r--r--src/lib/tls/tortls_openssl.c2
-rw-r--r--src/lib/tls/tortls_st.h2
-rw-r--r--src/lib/tls/tortls_sys.h2
-rw-r--r--src/lib/tls/x509.c2
-rw-r--r--src/lib/tls/x509.h2
-rw-r--r--src/lib/tls/x509_internal.h2
-rw-r--r--src/lib/tls/x509_nss.c2
-rw-r--r--src/lib/tls/x509_openssl.c5
-rw-r--r--src/lib/trace/debug.h2
-rw-r--r--src/lib/trace/events.h2
-rw-r--r--src/lib/trace/trace.c2
-rw-r--r--src/lib/trace/trace.h2
-rw-r--r--src/lib/version/git_revision.c2
-rw-r--r--src/lib/version/git_revision.h2
-rw-r--r--src/lib/version/torversion.h2
-rw-r--r--src/lib/version/version.c2
-rw-r--r--src/lib/wallclock/approx_time.c2
-rw-r--r--src/lib/wallclock/approx_time.h2
-rw-r--r--src/lib/wallclock/time_to_tm.c2
-rw-r--r--src/lib/wallclock/time_to_tm.h2
-rw-r--r--src/lib/wallclock/timeval.h2
-rw-r--r--src/lib/wallclock/tor_gettimeofday.c2
-rw-r--r--src/lib/wallclock/tor_gettimeofday.h2
-rw-r--r--src/lib/wallclock/wallclock_sys.h2
-rw-r--r--src/rust/Cargo.lock2
-rw-r--r--src/rust/crypto/digests/mod.rs2
-rw-r--r--src/rust/crypto/digests/sha2.rs2
-rw-r--r--src/rust/crypto/lib.rs2
-rw-r--r--src/rust/crypto/rand/mod.rs2
-rw-r--r--src/rust/crypto/rand/rng.rs2
-rw-r--r--src/rust/external/crypto_digest.rs2
-rw-r--r--src/rust/external/crypto_rand.rs2
-rw-r--r--src/rust/external/external.rs2
-rw-r--r--src/rust/external/lib.rs2
-rw-r--r--src/rust/protover/errors.rs2
-rw-r--r--src/rust/protover/ffi.rs2
-rw-r--r--src/rust/protover/lib.rs2
-rw-r--r--src/rust/protover/protoset.rs2
-rw-r--r--src/rust/protover/protover.rs10
-rw-r--r--src/rust/protover/tests/protover.rs2
-rw-r--r--src/rust/smartlist/lib.rs2
-rw-r--r--src/rust/smartlist/smartlist.rs2
-rw-r--r--src/rust/tor_allocate/lib.rs2
-rw-r--r--src/rust/tor_allocate/tor_allocate.rs2
-rw-r--r--src/rust/tor_log/lib.rs2
-rw-r--r--src/rust/tor_log/tor_log.rs2
-rw-r--r--src/rust/tor_util/ffi.rs2
-rw-r--r--src/rust/tor_util/lib.rs2
-rw-r--r--src/rust/tor_util/strings.rs2
-rw-r--r--src/test/Makefile.nmake1
-rw-r--r--src/test/bench.c64
-rwxr-xr-xsrc/test/bt_test.py2
-rw-r--r--src/test/ed25519_exts_ref.py2
-rw-r--r--src/test/fakechans.h2
-rw-r--r--src/test/fuzz/dict/http2
-rw-r--r--src/test/fuzz/fuzz_consensus.c2
-rw-r--r--src/test/fuzz/fuzz_descriptor.c2
-rw-r--r--src/test/fuzz/fuzz_diff.c2
-rw-r--r--src/test/fuzz/fuzz_diff_apply.c2
-rw-r--r--src/test/fuzz/fuzz_extrainfo.c2
-rw-r--r--src/test/fuzz/fuzz_hsdescv2.c2
-rw-r--r--src/test/fuzz/fuzz_hsdescv3.c2
-rw-r--r--src/test/fuzz/fuzz_http.c2
-rw-r--r--src/test/fuzz/fuzz_http_connect.c2
-rw-r--r--src/test/fuzz/fuzz_iptsv2.c2
-rw-r--r--src/test/fuzz/fuzz_microdesc.c2
-rw-r--r--src/test/fuzz/fuzz_socks.c2
-rw-r--r--src/test/fuzz/fuzz_strops.c2
-rw-r--r--src/test/fuzz/fuzz_vrs.c2
-rw-r--r--src/test/fuzz/fuzzing.h2
-rw-r--r--src/test/fuzz/fuzzing_common.c2
-rwxr-xr-xsrc/test/fuzz_static_testcases.sh2
-rw-r--r--src/test/hs_ntor_ref.py2
-rw-r--r--src/test/hs_test_helpers.c2
-rw-r--r--src/test/hs_test_helpers.h2
-rw-r--r--src/test/include.am13
-rw-r--r--src/test/log_test_helpers.c2
-rw-r--r--src/test/log_test_helpers.h2
-rwxr-xr-xsrc/test/ntor_ref.py2
-rw-r--r--src/test/ope_ref.py2
-rw-r--r--src/test/prob_distr_mpfr_ref.c64
-rw-r--r--src/test/rend_test_helpers.c2
-rw-r--r--src/test/rend_test_helpers.h2
-rw-r--r--src/test/test-memwipe.c5
-rw-r--r--src/test/test-process.c2
-rw-r--r--src/test/test-timers.c2
-rw-r--r--src/test/test.c5
-rw-r--r--src/test/test.h6
-rw-r--r--src/test/test_accounting.c2
-rw-r--r--src/test/test_addr.c2
-rw-r--r--src/test/test_address.c10
-rw-r--r--src/test/test_address_set.c2
-rw-r--r--src/test/test_bridges.c2
-rwxr-xr-xsrc/test/test_bt.sh2
-rw-r--r--src/test/test_bt_cl.c10
-rw-r--r--src/test/test_btrack.c2
-rw-r--r--src/test/test_buffers.c2
-rw-r--r--src/test/test_bwmgt.c2
-rw-r--r--src/test/test_cell_formats.c2
-rw-r--r--src/test/test_cell_queue.c2
-rw-r--r--src/test/test_channel.c2
-rw-r--r--src/test/test_channelpadding.c2
-rw-r--r--src/test/test_channeltls.c2
-rw-r--r--src/test/test_checkdir.c2
-rw-r--r--src/test/test_circuitbuild.c2
-rw-r--r--src/test/test_circuitlist.c2
-rw-r--r--src/test/test_circuitmux.c2
-rw-r--r--src/test/test_circuitpadding.c2361
-rw-r--r--src/test/test_circuitstats.c2
-rw-r--r--src/test/test_circuituse.c2
-rw-r--r--src/test/test_compat_libevent.c2
-rw-r--r--src/test/test_config.c2
-rw-r--r--src/test/test_connection.c2
-rw-r--r--src/test/test_connection.h2
-rw-r--r--src/test/test_conscache.c2
-rw-r--r--src/test/test_consdiff.c2
-rw-r--r--src/test/test_consdiffmgr.c2
-rw-r--r--src/test/test_containers.c27
-rw-r--r--src/test/test_controller.c2
-rw-r--r--src/test/test_controller_events.c2
-rw-r--r--src/test/test_crypto.c173
-rw-r--r--src/test/test_crypto_ope.c2
-rw-r--r--src/test/test_crypto_openssl.c2
-rw-r--r--src/test/test_crypto_rng.c332
-rw-r--r--src/test/test_crypto_slow.c2
-rw-r--r--src/test/test_data.c2
-rw-r--r--src/test/test_dir.c125
-rw-r--r--src/test/test_dir_common.c2
-rw-r--r--src/test/test_dir_common.h2
-rw-r--r--src/test/test_dir_handle_get.c2
-rw-r--r--src/test/test_dns.c2
-rw-r--r--src/test/test_dos.c2
-rw-r--r--src/test/test_entryconn.c2
-rw-r--r--src/test/test_entrynodes.c2
-rw-r--r--src/test/test_extorport.c2
-rw-r--r--src/test/test_geoip.c2
-rw-r--r--src/test/test_guardfraction.c2
-rw-r--r--src/test/test_handles.c2
-rw-r--r--src/test/test_helpers.c2
-rw-r--r--src/test/test_helpers.h2
-rw-r--r--src/test/test_hs.c2
-rw-r--r--src/test/test_hs_cache.c2
-rw-r--r--src/test/test_hs_cell.c2
-rw-r--r--src/test/test_hs_client.c2
-rw-r--r--src/test/test_hs_common.c2
-rw-r--r--src/test/test_hs_config.c2
-rw-r--r--src/test/test_hs_control.c2
-rw-r--r--src/test/test_hs_descriptor.c2
-rw-r--r--src/test/test_hs_intropoint.c2
-rw-r--r--src/test/test_hs_ntor.c2
-rw-r--r--src/test/test_hs_ntor_cl.c2
-rw-r--r--src/test/test_hs_service.c2
-rw-r--r--src/test/test_introduce.c2
-rwxr-xr-xsrc/test/test_keygen.sh46
-rw-r--r--src/test/test_keypin.c2
-rw-r--r--src/test/test_link_handshake.c2
-rw-r--r--src/test/test_logging.c2
-rw-r--r--src/test/test_mainloop.c2
-rw-r--r--src/test/test_microdesc.c2
-rw-r--r--src/test/test_netinfo.c2
-rw-r--r--src/test/test_nodelist.c2
-rw-r--r--src/test/test_ntor_cl.c2
-rw-r--r--src/test/test_oom.c2
-rw-r--r--src/test/test_oos.c2
-rw-r--r--src/test/test_options.c2
-rw-r--r--src/test/test_parsecommon.c2
-rw-r--r--src/test/test_pem.c2
-rw-r--r--src/test/test_periodic_event.c2
-rw-r--r--src/test/test_policy.c2
-rw-r--r--src/test/test_prob_distr.c1453
-rw-r--r--src/test/test_process.c2
-rw-r--r--src/test/test_process_slow.c4
-rw-r--r--src/test/test_procmon.c2
-rw-r--r--src/test/test_proto_http.c2
-rw-r--r--src/test/test_proto_misc.c2
-rw-r--r--src/test/test_protover.c2
-rw-r--r--src/test/test_pt.c20
-rwxr-xr-xsrc/test/test_rebind.sh9
-rw-r--r--src/test/test_relay.c2
-rw-r--r--src/test/test_relaycell.c2
-rw-r--r--src/test/test_relaycrypt.c2
-rw-r--r--src/test/test_rendcache.c2
-rw-r--r--src/test/test_replay.c2
-rw-r--r--src/test/test_rng.c59
-rw-r--r--src/test/test_router.c2
-rw-r--r--src/test/test_routerkeys.c2
-rw-r--r--src/test/test_routerlist.c2
-rw-r--r--src/test/test_routerset.c2
-rw-r--r--src/test/test_scheduler.c2
-rw-r--r--src/test/test_shared_random.c2
-rw-r--r--src/test/test_slow.c3
-rw-r--r--src/test/test_socks.c41
-rw-r--r--src/test/test_status.c2
-rw-r--r--src/test/test_storagedir.c2
-rw-r--r--src/test/test_switch_id.c2
-rwxr-xr-xsrc/test/test_switch_id.sh4
-rw-r--r--src/test/test_threads.c2
-rw-r--r--src/test/test_tortls.c2
-rw-r--r--src/test/test_tortls.h2
-rw-r--r--src/test/test_tortls_openssl.c2
-rw-r--r--src/test/test_util.c158
-rw-r--r--src/test/test_util_format.c2
-rw-r--r--src/test/test_util_process.c2
-rw-r--r--src/test/test_voting_flags.c2
-rw-r--r--src/test/test_voting_schedule.c2
-rw-r--r--src/test/test_workqueue.c2
-rwxr-xr-xsrc/test/test_workqueue_cancel.sh2
-rwxr-xr-xsrc/test/test_workqueue_efd.sh2
-rwxr-xr-xsrc/test/test_workqueue_efd2.sh2
-rwxr-xr-xsrc/test/test_workqueue_pipe.sh2
-rwxr-xr-xsrc/test/test_workqueue_pipe2.sh2
-rwxr-xr-xsrc/test/test_workqueue_socketpair.sh2
-rw-r--r--src/test/test_x509.c2
-rw-r--r--src/test/testing_common.c20
-rw-r--r--src/test/testing_rsakeys.c2
-rwxr-xr-xsrc/test/zero_length_keys.sh6
-rw-r--r--src/tools/tor-gencert.c2
-rw-r--r--src/tools/tor-print-ed-signing-cert.c2
-rw-r--r--src/tools/tor-resolve.c2
-rw-r--r--src/tools/tor_runner.c2
-rw-r--r--src/trunnel/circpad_negotiation.c549
-rw-r--r--src/trunnel/circpad_negotiation.h195
-rw-r--r--src/trunnel/circpad_negotiation.trunnel44
-rw-r--r--src/trunnel/include.am11
-rw-r--r--src/win32/orconfig.h2
957 files changed, 32306 insertions, 12646 deletions
diff --git a/.gitignore b/.gitignore
index 6a49285b8a..a40cda02dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -248,6 +248,7 @@ uptime-*.json
/src/test/test-memwipe
/src/test/test-ntor-cl
/src/test/test-hs-ntor-cl
+/src/test/test-rng
/src/test/test-switch-id
/src/test/test-timers
/src/test/test_workqueue
@@ -258,6 +259,7 @@ uptime-*.json
/src/test/test-ntor-cl.exe
/src/test/test-hs-ntor-cl.exe
/src/test/test-memwipe.exe
+/src/test/test-rng.exe
/src/test/test-switch-id.exe
/src/test/test-timers.exe
/src/test/test_workqueue.exe
diff --git a/.travis.yml b/.travis.yml
index 2ea529e252..474f6867fd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -131,6 +131,7 @@ addons:
- docbook-xsl
- docbook-xml
- xmlto
+ - shellcheck
## (OSX only)
homebrew:
packages:
@@ -154,6 +155,7 @@ addons:
## Always installed, because manual brew installs are hard to get right
- asciidoc
- xmlto
+ - shellcheck
## (OSX only) Use the default OSX image
## See https://docs.travis-ci.com/user/reference/osx#os-x-version
diff --git a/ChangeLog b/ChangeLog
index a1667aa30a..dd2a98469d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1023 @@
+Changes in version 0.3.5.8 - 2019-02-21
+ Tor 0.3.5.8 backports serveral fixes from later releases, including fixes
+ for an annoying SOCKS-parsing bug that affected users in earlier 0.3.5.x
+ releases.
+
+ It also includes a fix for a medium-severity security bug affecting Tor
+ 0.3.2.1-alpha and later. All Tor instances running an affected release
+ should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Major bugfixes (networking, backport from 0.4.0.2-alpha):
+ - Gracefully handle empty username/password fields in SOCKS5
+ username/password auth messsage and allow SOCKS5 handshake to
+ continue. Previously, we had rejected these handshakes, breaking
+ certain applications. Fixes bug 29175; bugfix on 0.3.5.1-alpha.
+
+ o Minor features (compilation, backport from 0.4.0.2-alpha):
+ - Compile correctly when OpenSSL is built with engine support
+ disabled, or with deprecated APIs disabled. Closes ticket 29026.
+ Patches from "Mangix".
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor features (testing, backport from 0.4.0.2-alpha):
+ - Treat all unexpected ERR and BUG messages as test failures. Closes
+ ticket 28668.
+
+ o Minor bugfixes (onion service v3, client, backport from 0.4.0.1-alpha):
+ - Stop logging a "BUG()" warning and stacktrace when we find a SOCKS
+ connection waiting for a descriptor that we actually have in the
+ cache. It turns out that this can actually happen, though it is
+ rare. Now, tor will recover and retry the descriptor. Fixes bug
+ 28669; bugfix on 0.3.2.4-alpha.
+
+ o Minor bugfixes (IPv6, backport from 0.4.0.1-alpha):
+ - Fix tor_ersatz_socketpair on IPv6-only systems. Previously, the
+ IPv6 socket was bound using an address family of AF_INET instead
+ of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha. Patch from
+ Kris Katterjohn.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (client, clock skew, backport from 0.4.0.1-alpha):
+ - Select guards even if the consensus has expired, as long as the
+ consensus is still reasonably live. Fixes bug 24661; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.4.0.1-alpha):
+ - Compile correctly on OpenBSD; previously, we were missing some
+ headers required in order to detect it properly. Fixes bug 28938;
+ bugfix on 0.3.5.1-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (documentation, backport from 0.4.0.2-alpha):
+ - Describe the contents of the v3 onion service client authorization
+ files correctly: They hold public keys, not private keys. Fixes
+ bug 28979; bugfix on 0.3.5.1-alpha. Spotted by "Felixix".
+
+ o Minor bugfixes (logging, backport from 0.4.0.1-alpha):
+ - Rework rep_hist_log_link_protocol_counts() to iterate through all
+ link protocol versions when logging incoming/outgoing connection
+ counts. Tor no longer skips version 5, and we won't have to
+ remember to update this function when new link protocol version is
+ developed. Fixes bug 28920; bugfix on 0.2.6.10.
+
+ o Minor bugfixes (logging, backport from 0.4.0.2-alpha):
+ - Log more information at "warning" level when unable to read a
+ private key; log more information at "info" level when unable to
+ read a public key. We had warnings here before, but they were lost
+ during our NSS work. Fixes bug 29042; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (misc, backport from 0.4.0.2-alpha):
+ - The amount of total available physical memory is now determined
+ using the sysctl identifier HW_PHYSMEM (rather than HW_USERMEM)
+ when it is defined and a 64-bit variant is not available. Fixes
+ bug 28981; bugfix on 0.2.5.4-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Avoid crashing if ClientOnionAuthDir (incorrectly) contains more
+ than one private key for a hidden service. Fixes bug 29040; bugfix
+ on 0.3.5.1-alpha.
+ - In hs_cache_store_as_client() log an HSDesc we failed to parse at
+ "debug" level. Tor used to log it as a warning, which caused very
+ long log lines to appear for some users. Fixes bug 29135; bugfix
+ on 0.3.2.1-alpha.
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+ o Minor bugfixes (tests, directory clients, backport from 0.4.0.1-alpha):
+ - Mark outdated dirservers when Tor only has a reasonably live
+ consensus. Fixes bug 28569; bugfix on 0.3.2.5-alpha.
+
+ o Minor bugfixes (tests, backport from 0.4.0.2-alpha):
+ - Detect and suppress "bug" warnings from the util/time test on
+ Windows. Fixes bug 29161; bugfix on 0.2.9.3-alpha.
+ - Do not log an error-level message if we fail to find an IPv6
+ network interface from the unit tests. Fixes bug 29160; bugfix
+ on 0.2.7.3-rc.
+
+ o Minor bugfixes (usability, backport from 0.4.0.1-alpha):
+ - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate().
+ Some users took this phrasing to mean that the mentioned guard was
+ under their control or responsibility, which it is not. Fixes bug
+ 28895; bugfix on Tor 0.3.0.1-alpha.
+
+
+Changes in version 0.3.4.11 - 2019-02-21
+ Tor 0.3.4.11 is the third stable release in its series. It includes
+ a fix for a medium-severity security bug affecting Tor 0.3.2.1-alpha and
+ later. All Tor instances running an affected release should upgrade to
+ 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+
+Changes in version 0.3.3.12 - 2019-02-21
+ Tor 0.3.3.12 fixes a medium-severity security bug affecting Tor
+ 0.3.2.1-alpha and later. All Tor instances running an affected release
+ should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ This release marks the end of support for the Tor 0.3.3.x series. We
+ recommend that users switch to either the Tor 0.3.4 series (supported
+ until at least 10 June 2019), or the Tor 0.3.5 series, which will
+ receive long-term support until at least 1 Feb 2022.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+
+Changes in version 0.4.0.2-alpha - 2019-02-21
+ Tor 0.4.0.2-alpha is the second alpha in its series; it fixes several
+ bugs from earlier versions, including several that had broken
+ backward compatibility.
+
+ It also includes a fix for a medium-severity security bug affecting Tor
+ 0.3.2.1-alpha and later. All Tor instances running an affected release
+ should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Major bugfixes (networking):
+ - Gracefully handle empty username/password fields in SOCKS5
+ username/password auth messsage and allow SOCKS5 handshake to
+ continue. Previously, we had rejected these handshakes, breaking
+ certain applications. Fixes bug 29175; bugfix on 0.3.5.1-alpha.
+
+ o Major bugfixes (windows, startup):
+ - When reading a consensus file from disk, detect whether it was
+ written in text mode, and re-read it in text mode if so. Always
+ write consensus files in binary mode so that we can map them into
+ memory later. Previously, we had written in text mode, which
+ confused us when we tried to map the file on windows. Fixes bug
+ 28614; bugfix on 0.4.0.1-alpha.
+
+ o Minor features (compilation):
+ - Compile correctly when OpenSSL is built with engine support
+ disabled, or with deprecated APIs disabled. Closes ticket 29026.
+ Patches from "Mangix".
+
+ o Minor features (developer tooling):
+ - Check that bugfix versions in changes files look like Tor versions
+ from the versions spec. Warn when bugfixes claim to be on a future
+ release. Closes ticket 27761.
+ - Provide a git pre-commit hook that disallows commiting if we have
+ any failures in our code and changelog formatting checks. It is
+ now available in scripts/maint/pre-commit.git-hook. Implements
+ feature 28976.
+
+ o Minor features (directory authority):
+ - When a directory authority is using a bandwidth file to obtain
+ bandwidth values, include the digest of that file in the vote.
+ Closes ticket 26698.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor features (testing):
+ - Treat all unexpected ERR and BUG messages as test failures. Closes
+ ticket 28668.
+
+ o Minor bugfixes (build, compatibility, rust):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (compilation):
+ - Fix compilation warnings in test_circuitpadding.c. Fixes bug
+ 29169; bugfix on 0.4.0.1-alpha.
+ - Silence a compiler warning in test-memwipe.c on OpenBSD. Fixes bug
+ 29145; bugfix on 0.2.9.3-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (documentation):
+ - Describe the contents of the v3 onion service client authorization
+ files correctly: They hold public keys, not private keys. Fixes
+ bug 28979; bugfix on 0.3.5.1-alpha. Spotted by "Felixix".
+
+ o Minor bugfixes (linux seccomp sandbox):
+ - Fix startup crash when experimental sandbox support is enabled.
+ Fixes bug 29150; bugfix on 0.4.0.1-alpha. Patch by Peter Gerber.
+
+ o Minor bugfixes (logging):
+ - Avoid logging that we are relaxing a circuit timeout when that
+ timeout is fixed. Fixes bug 28698; bugfix on 0.2.4.7-alpha.
+ - Log more information at "warning" level when unable to read a
+ private key; log more information at "info" level when unable to
+ read a public key. We had warnings here before, but they were lost
+ during our NSS work. Fixes bug 29042; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (misc):
+ - The amount of total available physical memory is now determined
+ using the sysctl identifier HW_PHYSMEM (rather than HW_USERMEM)
+ when it is defined and a 64-bit variant is not available. Fixes
+ bug 28981; bugfix on 0.2.5.4-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (onion services):
+ - Avoid crashing if ClientOnionAuthDir (incorrectly) contains more
+ than one private key for a hidden service. Fixes bug 29040; bugfix
+ on 0.3.5.1-alpha.
+ - In hs_cache_store_as_client() log an HSDesc we failed to parse at
+ "debug" level. Tor used to log it as a warning, which caused very
+ long log lines to appear for some users. Fixes bug 29135; bugfix
+ on 0.3.2.1-alpha.
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+ o Minor bugfixes (scheduler):
+ - When re-adding channels to the pending list, check the correct
+ channel's sched_heap_idx. This issue has had no effect in mainline
+ Tor, but could have led to bugs down the road in improved versions
+ of our circuit scheduling code. Fixes bug 29508; bugfix
+ on 0.3.2.10.
+
+ o Minor bugfixes (tests):
+ - Fix intermittent failures on an adaptive padding test. Fixes one
+ case of bug 29122; bugfix on 0.4.0.1-alpha.
+ - Disable an unstable circuit-padding test that was failing
+ intermittently because of an ill-defined small histogram. Such
+ histograms will be allowed again after 29298 is implemented. Fixes
+ a second case of bug 29122; bugfix on 0.4.0.1-alpha.
+ - Detect and suppress "bug" warnings from the util/time test on
+ Windows. Fixes bug 29161; bugfix on 0.2.9.3-alpha.
+ - Do not log an error-level message if we fail to find an IPv6
+ network interface from the unit tests. Fixes bug 29160; bugfix
+ on 0.2.7.3-rc.
+
+ o Documentation:
+ - In the manpage entry describing MapAddress torrc setting, use
+ example IP addresses from ranges specified for use in documentation
+ by RFC 5737. Resolves issue 28623.
+
+ o Removed features:
+ - Remove the old check-tor script. Resolves issue 29072.
+
+
+Changes in version 0.4.0.1-alpha - 2019-01-18
+ Tor 0.4.0.1-alpha is the first release in the new 0.4.0.x series. It
+ introduces improved features for power and bandwidth conservation,
+ more accurate reporting of bootstrap progress for user interfaces, and
+ an experimental backend for an exciting new adaptive padding feature.
+ There is also the usual assortment of bugfixes and minor features, all
+ described below.
+
+ o Major features (battery management, client, dormant mode):
+ - When Tor is running as a client, and it is unused for a long time,
+ it can now enter a "dormant" state. When Tor is dormant, it avoids
+ network and CPU activity until it is reawoken either by a user
+ request or by a controller command. For more information, see the
+ configuration options starting with "Dormant". Implements tickets
+ 2149 and 28335.
+ - The client's memory of whether it is "dormant", and how long it
+ has spent idle, persists across invocations. Implements
+ ticket 28624.
+ - There is a DormantOnFirstStartup option that integrators can use
+ if they expect that in many cases, Tor will be installed but
+ not used.
+
+ o Major features (bootstrap reporting):
+ - When reporting bootstrap progress, report the first connection
+ uniformly, regardless of whether it's a connection for building
+ application circuits. This allows finer-grained reporting of early
+ progress than previously possible, with the improvements of ticket
+ 27169. Closes tickets 27167 and 27103. Addresses ticket 27308.
+ - When reporting bootstrap progress, treat connecting to a proxy or
+ pluggable transport as separate from having successfully used that
+ proxy or pluggable transport to connect to a relay. Closes tickets
+ 27100 and 28884.
+
+ o Major features (circuit padding):
+ - Implement preliminary support for the circuit padding portion of
+ Proposal 254. The implementation supports Adaptive Padding (aka
+ WTF-PAD) state machines for use between experimental clients and
+ relays. Support is also provided for APE-style state machines that
+ use probability distributions instead of histograms to specify
+ inter-packet delay. At the moment, Tor does not provide any
+ padding state machines that are used in normal operation: for now,
+ this feature exists solely for experimentation. Closes
+ ticket 28142.
+
+ o Major features (refactoring):
+ - Tor now uses an explicit list of its own subsystems when
+ initializing and shutting down. Previously, these systems were
+ managed implicitly in various places throughout the codebase.
+ (There may still be some subsystems using the old system.) Closes
+ ticket 28330.
+
+ o Minor features (bootstrap reporting):
+ - When reporting bootstrap progress, stop distinguishing between
+ situations where only internal paths are available and situations
+ where external paths are available. Previously, Tor would often
+ erroneously report that it had only internal paths. Closes
+ ticket 27402.
+
+ o Minor features (continuous integration):
+ - Log Python version during each Travis CI job. Resolves
+ issue 28551.
+
+ o Minor features (controller):
+ - Add a DROPOWNERSHIP command to undo the effects of TAKEOWNERSHIP.
+ Implements ticket 28843.
+
+ o Minor features (developer tooling):
+ - Provide a git hook script to prevent "fixup!" and "squash!"
+ commits from ending up in the master branch, as scripts/main/pre-
+ push.git-hook. Closes ticket 27993.
+
+ o Minor features (directory authority):
+ - Directory authorities support a new consensus algorithm, under
+ which the family lines in microdescriptors are encoded in a
+ canonical form. This change makes family lines more compressible
+ in transit, and on the client. Closes ticket 28266; implements
+ proposal 298.
+
+ o Minor features (directory authority, relay):
+ - Authorities now vote on a "StaleDesc" flag to indicate that a
+ relay's descriptor is so old that the relay should upload again
+ soon. Relays treat this flag as a signal to upload a new
+ descriptor. This flag will eventually let us remove the
+ 'published' date from routerstatus entries, and make our consensus
+ diffs much smaller. Closes ticket 26770; implements proposal 293.
+
+ o Minor features (fallback directory mirrors):
+ - Update the fallback whitelist based on operator opt-ins and opt-
+ outs. Closes ticket 24805, patch by Phoul.
+
+ o Minor features (FreeBSD):
+ - On FreeBSD-based systems, warn relay operators if the
+ "net.inet.ip.random_id" sysctl (IP ID randomization) is disabled.
+ Closes ticket 28518.
+
+ o Minor features (HTTP standards compliance):
+ - Stop sending the header "Content-type: application/octet-stream"
+ along with transparently compressed documents: this confused
+ browsers. Closes ticket 28100.
+
+ o Minor features (IPv6):
+ - We add an option ClientAutoIPv6ORPort, to make clients randomly
+ prefer a node's IPv4 or IPv6 ORPort. The random preference is set
+ every time a node is loaded from a new consensus or bridge config.
+ We expect that this option will enable clients to bootstrap more
+ quickly without having to determine whether they support IPv4,
+ IPv6, or both. Closes ticket 27490. Patch by Neel Chauhan.
+ - When using addrs_in_same_network_family(), avoid choosing circuit
+ paths that pass through the same IPv6 subnet more than once.
+ Previously, we only checked IPv4 subnets. Closes ticket 24393.
+ Patch by Neel Chauhan.
+
+ o Minor features (log messages):
+ - Improve log message in v3 onion services that could print out
+ negative revision counters. Closes ticket 27707. Patch
+ by "ffmancera".
+
+ o Minor features (memory usage):
+ - Save memory by storing microdescriptor family lists with a more
+ compact representation. Closes ticket 27359.
+ - Tor clients now use mmap() to read consensus files from disk, so
+ that they no longer need keep the full text of a consensus in
+ memory when parsing it or applying a diff. Closes ticket 27244.
+
+ o Minor features (parsing):
+ - Directory authorities now validate that router descriptors and
+ ExtraInfo documents are in a valid subset of UTF-8, and reject
+ them if they are not. Closes ticket 27367.
+
+ o Minor features (performance):
+ - Cache the results of summarize_protocol_flags(), so that we don't
+ have to parse the same protocol-versions string over and over.
+ This should save us a huge number of malloc calls on startup, and
+ may reduce memory fragmentation with some allocators. Closes
+ ticket 27225.
+ - Remove a needless memset() call from get_token_arguments, thereby
+ speeding up the tokenization of directory objects by about 20%.
+ Closes ticket 28852.
+ - Replace parse_short_policy() with a faster implementation, to
+ improve microdescriptor parsing time. Closes ticket 28853.
+ - Speed up directory parsing a little by avoiding use of the non-
+ inlined strcmp_len() function. Closes ticket 28856.
+ - Speed up microdescriptor parsing by about 30%, to help improve
+ startup time. Closes ticket 28839.
+
+ o Minor features (pluggable transports):
+ - Add support for emitting STATUS updates to Tor's control port from
+ a pluggable transport process. Closes ticket 28846.
+ - Add support for logging to Tor's logging subsystem from a
+ pluggable transport process. Closes ticket 28180.
+
+ o Minor features (process management):
+ - Add a new process API for handling child processes. This new API
+ allows Tor to have bi-directional communication with child
+ processes on both Unix and Windows. Closes ticket 28179.
+ - Use the subsystem manager to initialize and shut down the process
+ module. Closes ticket 28847.
+
+ o Minor features (relay):
+ - When listing relay families, list them in canonical form including
+ the relay's own identity, and try to give a more useful set of
+ warnings. Part of ticket 28266 and proposal 298.
+
+ o Minor features (required protocols):
+ - Before exiting because of a missing required protocol, Tor will
+ now check the publication time of the consensus, and not exit
+ unless the consensus is newer than the Tor program's own release
+ date. Previously, Tor would not check the consensus publication
+ time, and so might exit because of a missing protocol that might
+ no longer be required in a current consensus. Implements proposal
+ 297; closes ticket 27735.
+
+ o Minor features (testing):
+ - Allow a HeartbeatPeriod of less than 30 minutes in testing Tor
+ networks. Closes ticket 28840. Patch by Rob Jansen.
+
+ o Minor bugfixes (client, clock skew):
+ - Bootstrap successfully even when Tor's clock is behind the clocks
+ on the authorities. Fixes bug 28591; bugfix on 0.2.0.9-alpha.
+ - Select guards even if the consensus has expired, as long as the
+ consensus is still reasonably live. Fixes bug 24661; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (compilation):
+ - Compile correctly on OpenBSD; previously, we were missing some
+ headers required in order to detect it properly. Fixes bug 28938;
+ bugfix on 0.3.5.1-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (directory clients):
+ - Mark outdated dirservers when Tor only has a reasonably live
+ consensus. Fixes bug 28569; bugfix on 0.3.2.5-alpha.
+
+ o Minor bugfixes (directory mirrors):
+ - Even when a directory mirror's clock is behind the clocks on the
+ authorities, we now allow the mirror to serve "future"
+ consensuses. Fixes bug 28654; bugfix on 0.3.0.1-alpha.
+
+ o Minor bugfixes (DNS):
+ - Gracefully handle an empty or absent resolve.conf file by falling
+ back to using "localhost" as a DNS server (and hoping it works).
+ Previously, we would just stop running as an exit. Fixes bug
+ 21900; bugfix on 0.2.1.10-alpha.
+
+ o Minor bugfixes (guards):
+ - In count_acceptable_nodes(), the minimum number is now one bridge
+ or guard node, and two non-guard nodes for a circuit. Previously,
+ we had added up the sum of all nodes with a descriptor, but that
+ could cause us to build failing circuits when we had either too
+ many bridges or not enough guard nodes. Fixes bug 25885; bugfix on
+ 0.3.6.1-alpha. Patch by Neel Chauhan.
+
+ o Minor bugfixes (IPv6):
+ - Fix tor_ersatz_socketpair on IPv6-only systems. Previously, the
+ IPv6 socket was bound using an address family of AF_INET instead
+ of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha. Patch from
+ Kris Katterjohn.
+
+ o Minor bugfixes (logging):
+ - Rework rep_hist_log_link_protocol_counts() to iterate through all
+ link protocol versions when logging incoming/outgoing connection
+ counts. Tor no longer skips version 5, and we won't have to
+ remember to update this function when new link protocol version is
+ developed. Fixes bug 28920; bugfix on 0.2.6.10.
+
+ o Minor bugfixes (networking):
+ - Introduce additional checks into tor_addr_parse() to reject
+ certain incorrect inputs that previously were not detected. Fixes
+ bug 23082; bugfix on 0.2.0.10-alpha.
+
+ o Minor bugfixes (onion service v3, client):
+ - Stop logging a "BUG()" warning and stacktrace when we find a SOCKS
+ connection waiting for a descriptor that we actually have in the
+ cache. It turns out that this can actually happen, though it is
+ rare. Now, tor will recover and retry the descriptor. Fixes bug
+ 28669; bugfix on 0.3.2.4-alpha.
+
+ o Minor bugfixes (periodic events):
+ - Refrain from calling routerlist_remove_old_routers() from
+ check_descriptor_callback(). Instead, create a new hourly periodic
+ event. Fixes bug 27929; bugfix on 0.2.8.1-alpha.
+
+ o Minor bugfixes (pluggable transports):
+ - Make sure that data is continously read from standard output and
+ standard error pipes of a pluggable transport child-process, to
+ avoid deadlocking when a pipe's buffer is full. Fixes bug 26360;
+ bugfix on 0.2.3.6-alpha.
+
+ o Minor bugfixes (unit tests):
+ - Instead of relying on hs_free_all() to clean up all onion service
+ objects in test_build_descriptors(), we now deallocate them one by
+ one. This lets Coverity know that we are not leaking memory there
+ and fixes CID 1442277. Fixes bug 28989; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (usability):
+ - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate().
+ Some users took this phrasing to mean that the mentioned guard was
+ under their control or responsibility, which it is not. Fixes bug
+ 28895; bugfix on Tor 0.3.0.1-alpha.
+
+ o Code simplification and refactoring:
+ - Reimplement NETINFO cell parsing and generation to rely on
+ trunnel-generated wire format handling code. Closes ticket 27325.
+ - Remove unnecessary unsafe code from the Rust macro "cstr!". Closes
+ ticket 28077.
+ - Rework SOCKS wire format handling to rely on trunnel-generated
+ parsing/generation code. Resolves ticket 27620.
+ - Split out bootstrap progress reporting from control.c into a
+ separate file. Part of ticket 27402.
+ - The .may_include files that we use to describe our directory-by-
+ directory dependency structure now describe a noncircular
+ dependency graph over the directories that they cover. Our
+ checkIncludes.py tool now enforces this noncircularity. Closes
+ ticket 28362.
+
+ o Documentation:
+ - Mention that you cannot add a new onion service if Tor is already
+ running with Sandbox enabled. Closes ticket 28560.
+ - Improve ControlPort documentation. Mention that it accepts
+ address:port pairs, and can be used multiple times. Closes
+ ticket 28805.
+ - Document the exact output of "tor --version". Closes ticket 28889.
+
+ o Removed features:
+ - Stop responding to the 'GETINFO status/version/num-concurring' and
+ 'GETINFO status/version/num-versioning' control port commands, as
+ those were deprecated back in 0.2.0.30. Also stop listing them in
+ output of 'GETINFO info/names'. Resolves ticket 28757.
+ - The scripts used to generate and maintain the list of fallback
+ directories have been extracted into a new "fallback-scripts"
+ repository. Closes ticket 27914.
+
+ o Testing:
+ - Run shellcheck for scripts in the in scripts/ directory. Closes
+ ticket 28058.
+ - Add unit tests for tokenize_string() and get_next_token()
+ functions. Resolves ticket 27625.
+
+ o Code simplification and refactoring (onion service v3):
+ - Consolidate the authorized client descriptor cookie computation
+ code from client and service into one function. Closes
+ ticket 27549.
+
+ o Code simplification and refactoring (shell scripts):
+ - Cleanup scan-build.sh to silence shellcheck warnings. Closes
+ ticket 28007.
+ - Fix issues that shellcheck found in chutney-git-bisect.sh.
+ Resolves ticket 28006.
+ - Fix issues that shellcheck found in updateRustDependencies.sh.
+ Resolves ticket 28012.
+ - Fix shellcheck warnings in cov-diff script. Resolves issue 28009.
+ - Fix shellcheck warnings in run_calltool.sh. Resolves ticket 28011.
+ - Fix shellcheck warnings in run_trunnel.sh. Resolves issue 28010.
+ - Fix shellcheck warnings in scripts/test/coverage. Resolves
+ issue 28008.
+
+
+Changes in version 0.3.3.11 - 2019-01-07
+ Tor 0.3.3.11 backports numerous fixes from later versions of Tor.
+ numerous fixes, including an important fix for anyone using OpenSSL
+ 1.1.1. Anyone running an earlier version of Tor 0.3.3 should upgrade
+ to this version, or to a later series.
+
+ As a reminder, support the Tor 0.3.3 series will end on 22 Feb 2019.
+ We anticipate that this will be the last release of Tor 0.3.3, unless
+ some major bug is before then. Some time between now and then, users
+ should switch to either the Tor 0.3.4 series (supported until at least
+ 10 June 2019), or the Tor 0.3.5 series, which will receive long-term
+ support until at least 1 Feb 2022.
+
+ o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
+ - Fix our usage of named groups when running as a TLS 1.3 client in
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
+ running as a relay, which caused clients to fail to negotiate TLS
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
+ support was added).
+
+ o Major bugfixes (restart-in-process, backport from 0.3.5.1-alpha):
+ - Fix a use-after-free error that could be caused by passing Tor an
+ impossible set of options that would fail during options_act().
+ Fixes bug 27708; bugfix on 0.3.3.1-alpha.
+
+ o Minor features (continuous integration, backport from 0.3.5.1-alpha):
+ - Only run one online rust build in Travis, to reduce network
+ errors. Skip offline rust builds on Travis for Linux gcc, because
+ they're redundant. Implements ticket 27252.
+ - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
+ duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
+ Linux with default settings, because all the non-default builds
+ use gcc on Linux. Implements ticket 27252.
+
+ o Minor features (continuous integration, backport from 0.3.5.3-alpha):
+ - Use the Travis Homebrew addon to install packages on macOS during
+ Travis CI. The package list is the same, but the Homebrew addon
+ does not do a `brew update` by default. Implements ticket 27738.
+
+ o Minor features (fallback directory list, backport from 0.3.5.6-rc):
+ - Replace the 150 fallbacks originally introduced in Tor
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
+ removed) generated in December 2018. Closes ticket 24803.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29012.
+
+ o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor bugfixes (relay statistics, backport from 0.3.5.7):
+ - Update relay descriptor on bandwidth changes only when the uptime
+ is smaller than 24h, in order to reduce the efficiency of guard
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.5.4-alpha):
+ - Avoid undefined behavior in an end-of-string check when parsing
+ the BEGIN line in a directory object. Fixes bug 28202; bugfix
+ on 0.2.0.3-alpha.
+
+ o Minor bugfixes (code safety, backport from 0.3.5.3-alpha):
+ - Rewrite our assertion macros so that they no longer suppress the
+ compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
+
+ o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
+ - Initialize a variable unconditionally in aes_new_cipher(), since
+ some compilers cannot tell that we always initialize it before
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (directory authority, backport from 0.3.5.4-alpha):
+ - Log additional info when we get a relay that shares an ed25519 ID
+ with a different relay, instead making a BUG() warning. Fixes bug
+ 27800; bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
+ - When a user requests a group-readable DataDirectory, give it to
+ them. Previously, when the DataDirectory and the CacheDirectory
+ were the same, the default setting (0) for
+ CacheDirectoryGroupReadable would override the setting for
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.1-alpha):
+ - When the onion service directory can't be created or has the wrong
+ permissions, do not log a stack trace. Fixes bug 27335; bugfix
+ on 0.3.2.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.2-alpha):
+ - Close all SOCKS request (for the same .onion) if the newly fetched
+ descriptor is unusable. Before that, we would close only the first
+ one leaving the other hanging and let to time out by themselves.
+ Fixes bug 27410; bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
+ - Don't warn so loudly when Tor is unable to decode an onion
+ descriptor. This can now happen as a normal use case if a client
+ gets a descriptor with client authorization but the client is not
+ authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
+ any rendezvous circuits in order to let the existing client
+ connections finish by themselves or closed by the application. The
+ HS v2 is doing that already so now we have the same behavior for
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (HTTP tunnel):
+ - Fix a bug warning when closing an HTTP tunnel connection due to
+ an HTTP request we couldn't handle. Fixes bug 26470; bugfix on
+ 0.3.2.1-alpha.
+
+ o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
+
+ o Minor bugfixes (netflow padding, backport from 0.3.5.1-alpha):
+ - Ensure circuitmux queues are empty before scheduling or sending
+ padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (protover, backport from 0.3.5.3-alpha):
+ - Reject protocol names containing bytes other than alphanumeric
+ characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (rust, backport from 0.3.5.1-alpha):
+ - Compute protover votes correctly in the rust version of the
+ protover code. Previously, the protover rewrite in 24031 allowed
+ repeated votes from the same voter for the same protocol version
+ to be counted multiple times in protover_compute_vote(). Fixes bug
+ 27649; bugfix on 0.3.3.5-rc.
+ - Reject protover names that contain invalid characters. Fixes bug
+ 27687; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (rust, backport from 0.3.5.2-alpha):
+ - protover_all_supported() would attempt to allocate up to 16GB on
+ some inputs, leading to a potential memory DoS. Fixes bug 27206;
+ bugfix on 0.3.3.5-rc.
+
+ o Minor bugfixes (rust, backport from 0.3.5.4-alpha):
+ - Fix a potential null dereference in protover_all_supported(). Add
+ a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.
+ - Return a string that can be safely freed by C code, not one
+ created by the rust allocator, in protover_all_supported(). Fixes
+ bug 27740; bugfix on 0.3.3.1-alpha.
+ - Fix an API mismatch in the rust implementation of
+ protover_compute_vote(). This bug could have caused crashes on any
+ directory authorities running Tor with Rust (which we do not yet
+ recommend). Fixes bug 27741; bugfix on 0.3.3.6.
+
+ o Minor bugfixes (testing, backport from 0.3.5.1-alpha):
+ - If a unit test running in a subprocess exits abnormally or with a
+ nonzero status code, treat the test as having failed, even if the
+ test reported success. Without this fix, memory leaks don't cause
+ the tests to fail, even with LeakSanitizer. Fixes bug 27658;
+ bugfix on 0.2.2.4-alpha.
+
+ o Minor bugfixes (testing, backport from 0.3.5.4-alpha):
+ - Treat backtrace test failures as expected on BSD-derived systems
+ (NetBSD, OpenBSD, and macOS/Darwin) until we solve bug 17808.
+ (FreeBSD failures have been treated as expected since 18204 in
+ 0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
+
+ o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
+ bugfix on 0.3.0.1-alpha.
+
+
+Changes in version 0.3.4.10 - 2019-01-07
+ Tor 0.3.4.9 is the second stable release in its series; it backports
+ numerous fixes, including an important fix for relays, and for anyone
+ using OpenSSL 1.1.1. Anyone running an earlier version of Tor 0.3.4
+ should upgrade.
+
+ As a reminder, the Tor 0.3.4 series will be supported until 10 June
+ 2019. Some time between now and then, users should switch to the Tor
+ 0.3.5 series, which will receive long-term support until at least 1
+ Feb 2022.
+
+ o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
+ - Fix our usage of named groups when running as a TLS 1.3 client in
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
+ running as a relay, which caused clients to fail to negotiate TLS
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
+ support was added).
+
+ o Major bugfixes (relay, directory, backport from 0.3.5.7):
+ - Always reactivate linked connections in the main loop so long as
+ any linked connection has been active. Previously, connections
+ serving directory information wouldn't get reactivated after the
+ first chunk of data was sent (usually 32KB), which would prevent
+ clients from bootstrapping. Fixes bug 28912; bugfix on
+ 0.3.4.1-alpha. Patch by "cypherpunks3".
+
+ o Minor features (continuous integration, Windows, backport from 0.3.5.6-rc):
+ - Always show the configure and test logs, and upload them as build
+ artifacts, when building for Windows using Appveyor CI.
+ Implements 28459.
+
+ o Minor features (controller, backport from 0.3.5.1-alpha):
+ - For purposes of CIRC_BW-based dropped cell detection, track half-
+ closed stream ids, and allow their ENDs, SENDMEs, DATA and path
+ bias check cells to arrive without counting it as dropped until
+ either the END arrives, or the windows are empty. Closes
+ ticket 25573.
+
+ o Minor features (fallback directory list, backport from 0.3.5.6-rc):
+ - Replace the 150 fallbacks originally introduced in Tor
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
+ removed) generated in December 2018. Closes ticket 24803.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the November 6 2018 Maxmind GeoLite2
+ Country database. Closes ticket 28395.
+
+ o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
+ - Initialize a variable unconditionally in aes_new_cipher(), since
+ some compilers cannot tell that we always initialize it before
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (connection, relay, backport from 0.3.5.5-alpha):
+ - Avoid a logging a BUG() stacktrace when closing connection held
+ open because the write side is rate limited but not the read side.
+ Now, the connection read side is simply shut down until Tor is
+ able to flush the connection and close it. Fixes bug 27750; bugfix
+ on 0.3.4.1-alpha.
+
+ o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.5-alpha):
+ - Manually configure the zstd compiler options, when building using
+ mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
+ not come with a pkg-config file. Fixes bug 28454; bugfix
+ on 0.3.4.1-alpha.
+ - Stop using an external OpenSSL install, and stop installing MSYS2
+ packages, when building using mingw on Appveyor Windows CI. Fixes
+ bug 28399; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.6-rc):
+ - Explicitly specify the path to the OpenSSL library and do not
+ download OpenSSL from Pacman, but instead use the library that is
+ already provided by AppVeyor. Fixes bug 28574; bugfix on master.
+
+ o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
+ - When a user requests a group-readable DataDirectory, give it to
+ them. Previously, when the DataDirectory and the CacheDirectory
+ were the same, the default setting (0) for
+ CacheDirectoryGroupReadable would override the setting for
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
+ - Don't warn so loudly when Tor is unable to decode an onion
+ descriptor. This can now happen as a normal use case if a client
+ gets a descriptor with client authorization but the client is not
+ authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
+ any rendezvous circuits in order to let the existing client
+ connections finish by themselves or closed by the application. The
+ HS v2 is doing that already so now we have the same behavior for
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (relay statistics, backport from 0.3.5.7):
+ - Update relay descriptor on bandwidth changes only when the uptime
+ is smaller than 24h, in order to reduce the efficiency of guard
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
+
+ o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
+ bugfix on 0.3.0.1-alpha.
+
+
+Changes in version 0.3.5.7 - 2019-01-07
+ Tor 0.3.5.7 is the first stable release in its series; it includes
+ compilation and portability fixes, and a fix for a severe problem
+ affecting directory caches.
+
+ The Tor 0.3.5 series includes several new features and performance
+ improvements, including client authorization for v3 onion services,
+ cleanups to bootstrap reporting, support for improved bandwidth-
+ measurement tools, experimental support for NSS in place of OpenSSL,
+ and much more. It also begins a full reorganization of Tor's code
+ layout, for improved modularity and maintainability in the future.
+ Finally, there is the usual set of performance improvements and
+ bugfixes that we try to do in every release series.
+
+ There are a couple of changes in the 0.3.5 that may affect
+ compatibility. First, the default version for newly created onion
+ services is now v3. Use the HiddenServiceVersion option if you want to
+ override this. Second, some log messages related to bootstrapping have
+ changed; if you use stem, you may need to update to the latest version
+ so it will recognize them.
+
+ We have designated 0.3.5 as a "long-term support" (LTS) series: we
+ will continue to patch major bugs in typical configurations of 0.3.5
+ until at least 1 Feb 2022. (We do not plan to provide long-term
+ support for embedding, Rust support, NSS support, running a directory
+ authority, or unsupported platforms. For these, you will need to stick
+ with the latest stable release.)
+
+ Below are the changes since 0.3.5.6-rc. For a complete list of changes
+ since 0.3.4.9, see the ReleaseNotes file.
+
+ o Major bugfixes (relay, directory):
+ - Always reactivate linked connections in the main loop so long as
+ any linked connection has been active. Previously, connections
+ serving directory information wouldn't get reactivated after the
+ first chunk of data was sent (usually 32KB), which would prevent
+ clients from bootstrapping. Fixes bug 28912; bugfix on
+ 0.3.4.1-alpha. Patch by "cypherpunks3".
+
+ o Minor features (compilation):
+ - When possible, place our warning flags in a separate file, to
+ avoid flooding verbose build logs. Closes ticket 28924.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29012.
+
+ o Minor features (OpenSSL bug workaround):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor features (performance):
+ - Remove about 96% of the work from the function that we run at
+ startup to test our curve25519_basepoint implementation. Since
+ this function has yet to find an actual failure, we now only run
+ it for 8 iterations instead of 200. Based on our profile
+ information, this change should save around 8% of our startup time
+ on typical desktops, and may have a similar effect on other
+ platforms. Closes ticket 28838.
+ - Stop re-validating our hardcoded Diffie-Hellman parameters on
+ every startup. Doing this wasted time and cycles, especially on
+ low-powered devices. Closes ticket 28851.
+
+ o Minor bugfixes (compilation):
+ - Fix compilation for Android by adding a missing header to
+ freespace.c. Fixes bug 28974; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (correctness):
+ - Fix an unreached code path where we checked the value of
+ "hostname" inside send_resolved_hostname_cell(). Previously, we
+ used it before checking it; now we check it first. Fixes bug
+ 28879; bugfix on 0.1.2.7-alpha.
+
+ o Minor bugfixes (testing):
+ - Make sure that test_rebind.py actually obeys its timeout, even
+ when it receives a large number of log messages. Fixes bug 28883;
+ bugfix on 0.3.5.4-alpha.
+ - Stop running stem's unit tests as part of "make test-stem", but
+ continue to run stem's unit and online tests during "make test-
+ stem-full". Fixes bug 28568; bugfix on 0.2.6.3-alpha.
+
+ o Minor bugfixes (windows services):
+ - Make Tor start correctly as an NT service again: previously it was
+ broken by refactoring. Fixes bug 28612; bugfix on 0.3.5.3-alpha.
+
+ o Code simplification and refactoring:
+ - When parsing a port configuration, make it more obvious to static
+ analyzer tools that we always initialize the address. Closes
+ ticket 28881.
+
+
Changes in version 0.3.5.6-rc - 2018-12-18
Tor 0.3.5.6-rc fixes numerous small bugs in earlier versions of Tor.
It is the first release candidate in the 0.3.5.x series; if no further
diff --git a/LICENSE b/LICENSE
index 9e2709aea6..cc27668427 100644
--- a/LICENSE
+++ b/LICENSE
@@ -13,7 +13,7 @@ Tor is distributed under this license:
Copyright (c) 2001-2004, Roger Dingledine
Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-Copyright (c) 2007-2018, The Tor Project, Inc.
+Copyright (c) 2007-2019, The Tor Project, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
diff --git a/Makefile.am b/Makefile.am
index 84050f8b34..b40b2e51bc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
# Copyright (c) 2001-2004, Roger Dingledine
# Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-# Copyright (c) 2007-2018, The Tor Project, Inc.
+# Copyright (c) 2007-2019, The Tor Project, Inc.
# See LICENSE for licensing information
ACLOCAL_AMFLAGS = -I m4
@@ -215,7 +215,16 @@ doxygen:
test: all
$(top_builddir)/src/test/test
-check-local: check-spaces check-changes check-includes
+shellcheck:
+ # Only use shellcheck if it is present
+ if command -v shellcheck; then \
+ find $(top_srcdir)/scripts/ -name "*.sh" -exec shellcheck {} +; \
+ if [ -d "$(top_srcdir)/scripts/test" ]; then \
+ shellcheck $(top_srcdir)/scripts/test/cov-diff $(top_builddir)/scripts/test/coverage; \
+ fi; \
+ fi
+
+check-local: check-spaces check-changes check-includes shellcheck
need-chutney-path:
@if test ! -d "$$CHUTNEY_PATH"; then \
@@ -412,7 +421,7 @@ endif
check-changes:
if USEPYTHON
@if test -d "$(top_srcdir)/changes"; then \
- $(PYTHON) $(top_srcdir)/scripts/maint/lintChanges.py $(top_srcdir)/changes; \
+ PACKAGE_VERSION=$(PACKAGE_VERSION) $(PYTHON) $(top_srcdir)/scripts/maint/lintChanges.py $(top_srcdir)/changes; \
fi
endif
diff --git a/ReleaseNotes b/ReleaseNotes
index e0a25a74b7..93dad1673b 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -2,6 +2,1209 @@ This document summarizes new features and bugfixes in each stable
release of Tor. If you want to see more detailed descriptions of the
changes in each development snapshot, see the ChangeLog file.
+Changes in version 0.3.5.8 - 2019-02-21
+ Tor 0.3.5.8 backports serveral fixes from later releases, including fixes
+ for an annoying SOCKS-parsing bug that affected users in earlier 0.3.5.x
+ releases.
+
+ It also includes a fix for a medium-severity security bug affecting Tor
+ 0.3.2.1-alpha and later. All Tor instances running an affected release
+ should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Major bugfixes (networking, backport from 0.4.0.2-alpha):
+ - Gracefully handle empty username/password fields in SOCKS5
+ username/password auth messsage and allow SOCKS5 handshake to
+ continue. Previously, we had rejected these handshakes, breaking
+ certain applications. Fixes bug 29175; bugfix on 0.3.5.1-alpha.
+
+ o Minor features (compilation, backport from 0.4.0.2-alpha):
+ - Compile correctly when OpenSSL is built with engine support
+ disabled, or with deprecated APIs disabled. Closes ticket 29026.
+ Patches from "Mangix".
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor features (testing, backport from 0.4.0.2-alpha):
+ - Treat all unexpected ERR and BUG messages as test failures. Closes
+ ticket 28668.
+
+ o Minor bugfixes (onion service v3, client, backport from 0.4.0.1-alpha):
+ - Stop logging a "BUG()" warning and stacktrace when we find a SOCKS
+ connection waiting for a descriptor that we actually have in the
+ cache. It turns out that this can actually happen, though it is
+ rare. Now, tor will recover and retry the descriptor. Fixes bug
+ 28669; bugfix on 0.3.2.4-alpha.
+
+ o Minor bugfixes (IPv6, backport from 0.4.0.1-alpha):
+ - Fix tor_ersatz_socketpair on IPv6-only systems. Previously, the
+ IPv6 socket was bound using an address family of AF_INET instead
+ of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha. Patch from
+ Kris Katterjohn.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (client, clock skew, backport from 0.4.0.1-alpha):
+ - Select guards even if the consensus has expired, as long as the
+ consensus is still reasonably live. Fixes bug 24661; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.4.0.1-alpha):
+ - Compile correctly on OpenBSD; previously, we were missing some
+ headers required in order to detect it properly. Fixes bug 28938;
+ bugfix on 0.3.5.1-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (documentation, backport from 0.4.0.2-alpha):
+ - Describe the contents of the v3 onion service client authorization
+ files correctly: They hold public keys, not private keys. Fixes
+ bug 28979; bugfix on 0.3.5.1-alpha. Spotted by "Felixix".
+
+ o Minor bugfixes (logging, backport from 0.4.0.1-alpha):
+ - Rework rep_hist_log_link_protocol_counts() to iterate through all
+ link protocol versions when logging incoming/outgoing connection
+ counts. Tor no longer skips version 5, and we won't have to
+ remember to update this function when new link protocol version is
+ developed. Fixes bug 28920; bugfix on 0.2.6.10.
+
+ o Minor bugfixes (logging, backport from 0.4.0.2-alpha):
+ - Log more information at "warning" level when unable to read a
+ private key; log more information at "info" level when unable to
+ read a public key. We had warnings here before, but they were lost
+ during our NSS work. Fixes bug 29042; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (misc, backport from 0.4.0.2-alpha):
+ - The amount of total available physical memory is now determined
+ using the sysctl identifier HW_PHYSMEM (rather than HW_USERMEM)
+ when it is defined and a 64-bit variant is not available. Fixes
+ bug 28981; bugfix on 0.2.5.4-alpha. Patch from Kris Katterjohn.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Avoid crashing if ClientOnionAuthDir (incorrectly) contains more
+ than one private key for a hidden service. Fixes bug 29040; bugfix
+ on 0.3.5.1-alpha.
+ - In hs_cache_store_as_client() log an HSDesc we failed to parse at
+ "debug" level. Tor used to log it as a warning, which caused very
+ long log lines to appear for some users. Fixes bug 29135; bugfix
+ on 0.3.2.1-alpha.
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+ o Minor bugfixes (tests, directory clients, backport from 0.4.0.1-alpha):
+ - Mark outdated dirservers when Tor only has a reasonably live
+ consensus. Fixes bug 28569; bugfix on 0.3.2.5-alpha.
+
+ o Minor bugfixes (tests, backport from 0.4.0.2-alpha):
+ - Detect and suppress "bug" warnings from the util/time test on
+ Windows. Fixes bug 29161; bugfix on 0.2.9.3-alpha.
+ - Do not log an error-level message if we fail to find an IPv6
+ network interface from the unit tests. Fixes bug 29160; bugfix
+ on 0.2.7.3-rc.
+
+ o Minor bugfixes (usability, backport from 0.4.0.1-alpha):
+ - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate().
+ Some users took this phrasing to mean that the mentioned guard was
+ under their control or responsibility, which it is not. Fixes bug
+ 28895; bugfix on Tor 0.3.0.1-alpha.
+
+
+Changes in version 0.3.4.11 - 2019-02-21
+ Tor 0.3.4.11 is the third stable release in its series. It includes
+ a fix for a medium-severity security bug affecting Tor 0.3.2.1-alpha and
+ later. All Tor instances running an affected release should upgrade to
+ 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+
+Changes in version 0.3.3.12 - 2019-02-21
+ Tor 0.3.3.12 fixes a medium-severity security bug affecting Tor
+ 0.3.2.1-alpha and later. All Tor instances running an affected release
+ should upgrade to 0.3.3.12, 0.3.4.11, 0.3.5.8, or 0.4.0.2-alpha.
+
+ This release marks the end of support for the Tor 0.3.3.x series. We
+ recommend that users switch to either the Tor 0.3.4 series (supported
+ until at least 10 June 2019), or the Tor 0.3.5 series, which will
+ receive long-term support until at least 1 Feb 2022.
+
+ o Major bugfixes (cell scheduler, KIST, security):
+ - Make KIST consider the outbuf length when computing what it can
+ put in the outbuf. Previously, KIST acted as though the outbuf
+ were empty, which could lead to the outbuf becoming too full. It
+ is possible that an attacker could exploit this bug to cause a Tor
+ client or relay to run out of memory and crash. Fixes bug 29168;
+ bugfix on 0.3.2.1-alpha. This issue is also being tracked as
+ TROVE-2019-001 and CVE-2019-8955.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the February 5 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29478.
+
+ o Minor bugfixes (build, compatibility, rust, backport from 0.4.0.2-alpha):
+ - Update Cargo.lock file to match the version made by the latest
+ version of Rust, so that "make distcheck" will pass again. Fixes
+ bug 29244; bugfix on 0.3.3.4-alpha.
+
+ o Minor bugfixes (onion services, backport from 0.4.0.2-alpha):
+ - Stop logging "Tried to establish rendezvous on non-OR circuit..."
+ as a warning. Instead, log it as a protocol warning, because there
+ is nothing that relay operators can do to fix it. Fixes bug 29029;
+ bugfix on 0.2.5.7-rc.
+
+
+Changes in version 0.3.3.11 - 2019-01-07
+ Tor 0.3.3.11 backports numerous fixes from later versions of Tor.
+ numerous fixes, including an important fix for anyone using OpenSSL
+ 1.1.1. Anyone running an earlier version of Tor 0.3.3 should upgrade
+ to this version, or to a later series.
+
+ As a reminder, support the Tor 0.3.3 series will end on 22 Feb 2019.
+ We anticipate that this will be the last release of Tor 0.3.3, unless
+ some major bug is before then. Some time between now and then, users
+ should switch to either the Tor 0.3.4 series (supported until at least
+ 10 June 2019), or the Tor 0.3.5 series, which will receive long-term
+ support until at least 1 Feb 2022.
+
+ o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
+ - Fix our usage of named groups when running as a TLS 1.3 client in
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
+ running as a relay, which caused clients to fail to negotiate TLS
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
+ support was added).
+
+ o Major bugfixes (restart-in-process, backport from 0.3.5.1-alpha):
+ - Fix a use-after-free error that could be caused by passing Tor an
+ impossible set of options that would fail during options_act().
+ Fixes bug 27708; bugfix on 0.3.3.1-alpha.
+
+ o Minor features (continuous integration, backport from 0.3.5.1-alpha):
+ - Only run one online rust build in Travis, to reduce network
+ errors. Skip offline rust builds on Travis for Linux gcc, because
+ they're redundant. Implements ticket 27252.
+ - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
+ duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
+ Linux with default settings, because all the non-default builds
+ use gcc on Linux. Implements ticket 27252.
+
+ o Minor features (continuous integration, backport from 0.3.5.3-alpha):
+ - Use the Travis Homebrew addon to install packages on macOS during
+ Travis CI. The package list is the same, but the Homebrew addon
+ does not do a `brew update` by default. Implements ticket 27738.
+
+ o Minor features (fallback directory list, backport from 0.3.5.6-rc):
+ - Replace the 150 fallbacks originally introduced in Tor
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
+ removed) generated in December 2018. Closes ticket 24803.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29012.
+
+ o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor bugfixes (relay statistics, backport from 0.3.5.7):
+ - Update relay descriptor on bandwidth changes only when the uptime
+ is smaller than 24h, in order to reduce the efficiency of guard
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.5.4-alpha):
+ - Avoid undefined behavior in an end-of-string check when parsing
+ the BEGIN line in a directory object. Fixes bug 28202; bugfix
+ on 0.2.0.3-alpha.
+
+ o Minor bugfixes (code safety, backport from 0.3.5.3-alpha):
+ - Rewrite our assertion macros so that they no longer suppress the
+ compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
+
+ o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
+ - Initialize a variable unconditionally in aes_new_cipher(), since
+ some compilers cannot tell that we always initialize it before
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (directory authority, backport from 0.3.5.4-alpha):
+ - Log additional info when we get a relay that shares an ed25519 ID
+ with a different relay, instead making a BUG() warning. Fixes bug
+ 27800; bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
+ - When a user requests a group-readable DataDirectory, give it to
+ them. Previously, when the DataDirectory and the CacheDirectory
+ were the same, the default setting (0) for
+ CacheDirectoryGroupReadable would override the setting for
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.1-alpha):
+ - When the onion service directory can't be created or has the wrong
+ permissions, do not log a stack trace. Fixes bug 27335; bugfix
+ on 0.3.2.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.2-alpha):
+ - Close all SOCKS request (for the same .onion) if the newly fetched
+ descriptor is unusable. Before that, we would close only the first
+ one leaving the other hanging and let to time out by themselves.
+ Fixes bug 27410; bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
+ - Don't warn so loudly when Tor is unable to decode an onion
+ descriptor. This can now happen as a normal use case if a client
+ gets a descriptor with client authorization but the client is not
+ authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
+ any rendezvous circuits in order to let the existing client
+ connections finish by themselves or closed by the application. The
+ HS v2 is doing that already so now we have the same behavior for
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (HTTP tunnel):
+ - Fix a bug warning when closing an HTTP tunnel connection due to
+ an HTTP request we couldn't handle. Fixes bug 26470; bugfix on
+ 0.3.2.1-alpha.
+
+ o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
+
+ o Minor bugfixes (netflow padding, backport from 0.3.5.1-alpha):
+ - Ensure circuitmux queues are empty before scheduling or sending
+ padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (protover, backport from 0.3.5.3-alpha):
+ - Reject protocol names containing bytes other than alphanumeric
+ characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (rust, backport from 0.3.5.1-alpha):
+ - Compute protover votes correctly in the rust version of the
+ protover code. Previously, the protover rewrite in 24031 allowed
+ repeated votes from the same voter for the same protocol version
+ to be counted multiple times in protover_compute_vote(). Fixes bug
+ 27649; bugfix on 0.3.3.5-rc.
+ - Reject protover names that contain invalid characters. Fixes bug
+ 27687; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (rust, backport from 0.3.5.2-alpha):
+ - protover_all_supported() would attempt to allocate up to 16GB on
+ some inputs, leading to a potential memory DoS. Fixes bug 27206;
+ bugfix on 0.3.3.5-rc.
+
+ o Minor bugfixes (rust, backport from 0.3.5.4-alpha):
+ - Fix a potential null dereference in protover_all_supported(). Add
+ a test for it. Fixes bug 27804; bugfix on 0.3.3.1-alpha.
+ - Return a string that can be safely freed by C code, not one
+ created by the rust allocator, in protover_all_supported(). Fixes
+ bug 27740; bugfix on 0.3.3.1-alpha.
+ - Fix an API mismatch in the rust implementation of
+ protover_compute_vote(). This bug could have caused crashes on any
+ directory authorities running Tor with Rust (which we do not yet
+ recommend). Fixes bug 27741; bugfix on 0.3.3.6.
+
+ o Minor bugfixes (testing, backport from 0.3.5.1-alpha):
+ - If a unit test running in a subprocess exits abnormally or with a
+ nonzero status code, treat the test as having failed, even if the
+ test reported success. Without this fix, memory leaks don't cause
+ the tests to fail, even with LeakSanitizer. Fixes bug 27658;
+ bugfix on 0.2.2.4-alpha.
+
+ o Minor bugfixes (testing, backport from 0.3.5.4-alpha):
+ - Treat backtrace test failures as expected on BSD-derived systems
+ (NetBSD, OpenBSD, and macOS/Darwin) until we solve bug 17808.
+ (FreeBSD failures have been treated as expected since 18204 in
+ 0.2.8.) Fixes bug 27948; bugfix on 0.2.5.2-alpha.
+
+ o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
+ bugfix on 0.3.0.1-alpha.
+
+
+Changes in version 0.3.4.10 - 2019-01-07
+ Tor 0.3.4.9 is the second stable release in its series; it backports
+ numerous fixes, including an important fix for relays, and for anyone
+ using OpenSSL 1.1.1. Anyone running an earlier version of Tor 0.3.4
+ should upgrade.
+
+ As a reminder, the Tor 0.3.4 series will be supported until 10 June
+ 2019. Some time between now and then, users should switch to the Tor
+ 0.3.5 series, which will receive long-term support until at least 1
+ Feb 2022.
+
+ o Major bugfixes (OpenSSL, portability, backport from 0.3.5.5-alpha):
+ - Fix our usage of named groups when running as a TLS 1.3 client in
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
+ running as a relay, which caused clients to fail to negotiate TLS
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
+ support was added).
+
+ o Major bugfixes (relay, directory, backport from 0.3.5.7):
+ - Always reactivate linked connections in the main loop so long as
+ any linked connection has been active. Previously, connections
+ serving directory information wouldn't get reactivated after the
+ first chunk of data was sent (usually 32KB), which would prevent
+ clients from bootstrapping. Fixes bug 28912; bugfix on
+ 0.3.4.1-alpha. Patch by "cypherpunks3".
+
+ o Minor features (continuous integration, Windows, backport from 0.3.5.6-rc):
+ - Always show the configure and test logs, and upload them as build
+ artifacts, when building for Windows using Appveyor CI.
+ Implements 28459.
+
+ o Minor features (controller, backport from 0.3.5.1-alpha):
+ - For purposes of CIRC_BW-based dropped cell detection, track half-
+ closed stream ids, and allow their ENDs, SENDMEs, DATA and path
+ bias check cells to arrive without counting it as dropped until
+ either the END arrives, or the windows are empty. Closes
+ ticket 25573.
+
+ o Minor features (fallback directory list, backport from 0.3.5.6-rc):
+ - Replace the 150 fallbacks originally introduced in Tor
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
+ removed) generated in December 2018. Closes ticket 24803.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the November 6 2018 Maxmind GeoLite2
+ Country database. Closes ticket 28395.
+
+ o Minor features (OpenSSL bug workaround, backport from 0.3.5.7):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor bugfixes (compilation, backport from 0.3.5.5-alpha):
+ - Initialize a variable unconditionally in aes_new_cipher(), since
+ some compilers cannot tell that we always initialize it before
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (connection, relay, backport from 0.3.5.5-alpha):
+ - Avoid a logging a BUG() stacktrace when closing connection held
+ open because the write side is rate limited but not the read side.
+ Now, the connection read side is simply shut down until Tor is
+ able to flush the connection and close it. Fixes bug 27750; bugfix
+ on 0.3.4.1-alpha.
+
+ o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.5-alpha):
+ - Manually configure the zstd compiler options, when building using
+ mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
+ not come with a pkg-config file. Fixes bug 28454; bugfix
+ on 0.3.4.1-alpha.
+ - Stop using an external OpenSSL install, and stop installing MSYS2
+ packages, when building using mingw on Appveyor Windows CI. Fixes
+ bug 28399; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (continuous integration, Windows, backport from 0.3.5.6-rc):
+ - Explicitly specify the path to the OpenSSL library and do not
+ download OpenSSL from Pacman, but instead use the library that is
+ already provided by AppVeyor. Fixes bug 28574; bugfix on master.
+
+ o Minor bugfixes (directory permissions, backport form 0.3.5.3-alpha):
+ - When a user requests a group-readable DataDirectory, give it to
+ them. Previously, when the DataDirectory and the CacheDirectory
+ were the same, the default setting (0) for
+ CacheDirectoryGroupReadable would override the setting for
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (memory leaks, backport from 0.3.5.5-alpha):
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.3-alpha):
+ - Don't warn so loudly when Tor is unable to decode an onion
+ descriptor. This can now happen as a normal use case if a client
+ gets a descriptor with client authorization but the client is not
+ authorized. Fixes bug 27550; bugfix on 0.3.5.1-alpha.
+
+ o Minor bugfixes (onion service v3, backport from 0.3.5.6-rc):
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
+ any rendezvous circuits in order to let the existing client
+ connections finish by themselves or closed by the application. The
+ HS v2 is doing that already so now we have the same behavior for
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (relay statistics, backport from 0.3.5.7):
+ - Update relay descriptor on bandwidth changes only when the uptime
+ is smaller than 24h, in order to reduce the efficiency of guard
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
+
+ o Minor bugfixes (unit tests, guard selection, backport from 0.3.5.6-rc):
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
+ bugfix on 0.3.0.1-alpha.
+
+
+Changes in version 0.3.5.7 - 2019-01-07
+ Tor 0.3.5.7 is the first stable release in its series; it includes
+ compilation and portability fixes, and a fix for a severe problem
+ affecting directory caches.
+
+ The Tor 0.3.5 series includes several new features and performance
+ improvements, including client authorization for v3 onion services,
+ cleanups to bootstrap reporting, support for improved bandwidth-
+ measurement tools, experimental support for NSS in place of OpenSSL,
+ and much more. It also begins a full reorganization of Tor's code
+ layout, for improved modularity and maintainability in the future.
+ Finally, there is the usual set of performance improvements and
+ bugfixes that we try to do in every release series.
+
+ There are a couple of changes in the 0.3.5 that may affect
+ compatibility. First, the default version for newly created onion
+ services is now v3. Use the HiddenServiceVersion option if you want to
+ override this. Second, some log messages related to bootstrapping have
+ changed; if you use stem, you may need to update to the latest version
+ so it will recognize them.
+
+ We have designated 0.3.5 as a "long-term support" (LTS) series: we
+ will continue to patch major bugs in typical configurations of 0.3.5
+ until at least 1 Feb 2022. (We do not plan to provide long-term
+ support for embedding, Rust support, NSS support, running a directory
+ authority, or unsupported platforms. For these, you will need to stick
+ with the latest stable release.)
+
+ Below are the changes since 0.3.4.9. For a complete list of changes
+ since 0.3.5.6-rc, see the ChangeLog file.
+
+ o Major features (bootstrap):
+ - Don't report directory progress until after a connection to a
+ relay or bridge has succeeded. Previously, we'd report 80%
+ progress based on cached directory information when we couldn't
+ even connect to the network. Closes ticket 27169.
+
+ o Major features (new code layout):
+ - Nearly all of Tor's source code has been moved around into more
+ logical places. The "common" directory is now divided into a set
+ of libraries in "lib", and files in the "or" directory have been
+ split into "core" (logic absolutely needed for onion routing),
+ "feature" (independent modules in Tor), and "app" (to configure
+ and invoke the rest of Tor). See doc/HACKING/CodeStructure.md for
+ more information. Closes ticket 26481.
+
+ This refactoring is not complete: although the libraries have been
+ refactored to be acyclic, the main body of Tor is still too
+ interconnected. We will attempt to improve this in the future.
+
+ o Major features (onion services v3):
+ - Implement onion service client authorization at the descriptor
+ level: only authorized clients can decrypt a service's descriptor
+ to find out how to contact it. A new torrc option was added to
+ control this client side: ClientOnionAuthDir <path>. On the
+ service side, if the "authorized_clients/" directory exists in the
+ onion service directory path, client configurations are read from
+ the files within. See the manpage for more details. Closes ticket
+ 27547. Patch done by Suphanat Chunhapanya (haxxpop).
+ - Improve revision counter generation in next-gen onion services.
+ Onion services can now scale by hosting multiple instances on
+ different hosts without synchronization between them, which was
+ previously impossible because descriptors would get rejected by
+ HSDirs. Addresses ticket 25552.
+ - Version 3 onion services can now use the per-service
+ HiddenServiceExportCircuitID option to differentiate client
+ circuits. It communicates with the service by using the HAProxy
+ protocol to assign virtual IP addresses to inbound client
+ circuits. Closes ticket 4700. Patch by Mahrud Sayrafi.
+
+ o Major features (onion services, UI change):
+ - For a newly created onion service, the default version is now 3.
+ Tor still supports existing version 2 services, but the operator
+ now needs to set "HiddenServiceVersion 2" in order to create a new
+ version 2 service. For existing services, Tor now learns the
+ version by reading the key file. Closes ticket 27215.
+
+ o Major features (portability, cryptography, experimental, TLS):
+ - Tor now has the option to compile with the NSS library instead of
+ OpenSSL. This feature is experimental, and we expect that bugs may
+ remain. It is mainly intended for environments where Tor's
+ performance is not CPU-bound, and where NSS is already known to be
+ installed. To try it out, configure Tor with the --enable-nss
+ flag. Closes tickets 26631, 26815, and 26816.
+
+ If you are experimenting with this option and using an old cached
+ consensus, Tor may fail to start. To solve this, delete your
+ "cached-consensus" and "cached-microdesc-consensus" files,
+ (if present), and restart Tor.
+
+ o Major features (relay, UI change):
+ - Relays no longer run as exits by default. If the "ExitRelay"
+ option is auto (or unset), and no exit policy is specified with
+ ExitPolicy or ReducedExitPolicy, we now treat ExitRelay as 0.
+ Previously in this case, we allowed exit traffic and logged a
+ warning message. Closes ticket 21530. Patch by Neel Chauhan.
+ - Tor now validates that the ContactInfo config option is valid UTF-
+ 8 when parsing torrc. Closes ticket 27428.
+
+ o Major bugfixes (compilation):
+ - Fix compilation on ARM (and other less-used CPUs) when compiling
+ with OpenSSL before 1.1. Fixes bug 27781; bugfix on 0.3.4.1-alpha.
+
+ o Major bugfixes (compilation, rust):
+ - Rust tests can now build and run successfully with the
+ --enable-fragile-hardening option enabled. Doing this currently
+ requires the rust beta channel; it will be possible with stable
+ rust once Rust version 1.31 is released. Patch from Alex Crichton.
+ Fixes bugs 27272, 27273, and 27274. Bugfix on 0.3.1.1-alpha.
+
+ o Major bugfixes (directory authority):
+ - Actually check that the address we get from DirAuthority
+ configuration line is valid IPv4. Explicitly disallow DirAuthority
+ address to be a DNS hostname. Fixes bug 26488; bugfix
+ on 0.1.2.10-rc.
+
+ o Major bugfixes (embedding, main loop):
+ - When DisableNetwork becomes set, actually disable periodic events
+ that are already enabled. (Previously, we would refrain from
+ enabling new ones, but we would leave the old ones turned on.)
+ Fixes bug 28348; bugfix on 0.3.4.1-alpha.
+
+ o Major bugfixes (main loop, bootstrap):
+ - Make sure Tor bootstraps and works properly if only the
+ ControlPort is set. Prior to this fix, Tor would only bootstrap
+ when a client port was set (Socks, Trans, NATD, DNS or HTTPTunnel
+ port). Fixes bug 27849; bugfix on 0.3.4.1-alpha.
+
+ o Major bugfixes (onion service v3):
+ - On an intro point for a version 3 onion service, stop closing
+ introduction circuits on a NACK. This lets the client decide
+ whether to reuse the circuit or discard it. Previously, we closed
+ intro circuits when sending NACKs. Fixes bug 27841; bugfix on
+ 0.3.2.1-alpha. Patch by Neel Chaunan.
+
+ o Major bugfixes (OpenSSL, portability):
+ - Fix our usage of named groups when running as a TLS 1.3 client in
+ OpenSSL 1.1.1. Previously, we only initialized EC groups when
+ running as a relay, which caused clients to fail to negotiate TLS
+ 1.3 with relays. Fixes bug 28245; bugfix on 0.2.9.15 (when TLS 1.3
+ support was added).
+
+ o Major bugfixes (relay bandwidth statistics):
+ - When we close relayed circuits, report the data in the circuit
+ queues as being written in our relay bandwidth stats. This
+ mitigates guard discovery and other attacks that close circuits
+ for the explicit purpose of noticing this discrepancy in
+ statistics. Fixes bug 23512; bugfix on 0.0.8pre3.
+
+ o Major bugfixes (relay):
+ - When our write bandwidth limit is exhausted, stop writing on the
+ connection. Previously, we had a typo in the code that would make
+ us stop reading instead, leading to relay connections being stuck
+ indefinitely and consuming kernel RAM. Fixes bug 28089; bugfix
+ on 0.3.4.1-alpha.
+ - Always reactivate linked connections in the main loop so long as
+ any linked connection has been active. Previously, connections
+ serving directory information wouldn't get reactivated after the
+ first chunk of data was sent (usually 32KB), which would prevent
+ clients from bootstrapping. Fixes bug 28912; bugfix on
+ 0.3.4.1-alpha. Patch by "cypherpunks3".
+
+ o Major bugfixes (restart-in-process):
+ - Fix a use-after-free error that could be caused by passing Tor an
+ impossible set of options that would fail during options_act().
+ Fixes bug 27708; bugfix on 0.3.3.1-alpha.
+
+ o Minor features (admin tools):
+ - Add a new --key-expiration option to print the expiration date of
+ the signing cert in an ed25519_signing_cert file. Resolves
+ issue 19506.
+
+ o Minor features (build):
+ - If you pass the "--enable-pic" option to configure, Tor will try
+ to tell the compiler to build position-independent code suitable
+ to link into a dynamic library. (The default remains -fPIE, for
+ code suitable for a relocatable executable.) Closes ticket 23846.
+
+ o Minor features (code correctness, testing):
+ - Tor's build process now includes a "check-includes" make target to
+ verify that no module of Tor relies on any headers from a higher-
+ level module. We hope to use this feature over time to help
+ refactor our codebase. Closes ticket 26447.
+
+ o Minor features (code layout):
+ - We have a new "lowest-level" error-handling API for use by code
+ invoked from within the logging module. With this interface, the
+ logging code is no longer at risk of calling into itself if a
+ failure occurs while it is trying to log something. Closes
+ ticket 26427.
+
+ o Minor features (compilation):
+ - When possible, place our warning flags in a separate file, to
+ avoid flooding verbose build logs. Closes ticket 28924.
+ - Tor's configure script now supports a --with-malloc= option to
+ select your malloc implementation. Supported options are
+ "tcmalloc", "jemalloc", "openbsd" (deprecated), and "system" (the
+ default). Addresses part of ticket 20424. Based on a patch from
+ Alex Xu.
+
+ o Minor features (config):
+ - The "auto" keyword in torrc is now case-insensitive. Closes
+ ticket 26663.
+
+ o Minor features (continuous integration):
+ - Add a Travis CI build for --enable-nss on Linux gcc. Closes
+ ticket 27751.
+ - Add new CI job to Travis configuration to run stem-based
+ integration tests. Closes ticket 27913.
+ - Use the Travis Homebrew addon to install packages on macOS during
+ Travis CI. The package list is the same, but the Homebrew addon
+ does not do a `brew update` by default. Implements ticket 27738.
+ - Report what program produced the mysterious core file that we
+ occasionally see on Travis CI during make distcheck. Closes
+ ticket 28024.
+ - Don't do a distcheck with --disable-module-dirauth in Travis.
+ Implements ticket 27252.
+ - Install libcap-dev and libseccomp2-dev so these optional
+ dependencies get tested on Travis CI. Closes ticket 26560.
+ - Only run one online rust build in Travis, to reduce network
+ errors. Skip offline rust builds on Travis for Linux gcc, because
+ they're redundant. Implements ticket 27252.
+ - Skip gcc on OSX in Travis CI, because it's rarely used. Skip a
+ duplicate hardening-off build in Travis on Tor 0.2.9. Skip gcc on
+ Linux with default settings, because all the non-default builds
+ use gcc on Linux. Implements ticket 27252.
+
+ o Minor features (continuous integration, Windows):
+ - Always show the configure and test logs, and upload them as build
+ artifacts, when building for Windows using Appveyor CI.
+ Implements 28459.
+ - Build tor on Windows Server 2012 R2 and Windows Server 2016 using
+ Appveyor's CI. Closes ticket 28318.
+
+ o Minor features (controller):
+ - Emit CIRC_BW events as soon as we detect that we processed an
+ invalid or otherwise dropped cell on a circuit. This allows
+ vanguards and other controllers to react more quickly to dropped
+ cells. Closes ticket 27678.
+ - For purposes of CIRC_BW-based dropped cell detection, track half-
+ closed stream ids, and allow their ENDs, SENDMEs, DATA and path
+ bias check cells to arrive without counting it as dropped until
+ either the END arrives, or the windows are empty. Closes
+ ticket 25573.
+ - Implement a 'GETINFO md/all' controller command to enable getting
+ all known microdescriptors. Closes ticket 8323.
+ - The GETINFO command now support an "uptime" argument, to return
+ Tor's uptime in seconds. Closes ticket 25132.
+
+ o Minor features (denial-of-service avoidance):
+ - Make our OOM handler aware of the DNS cache so that it doesn't
+ fill up the memory. This check is important for our DoS mitigation
+ subsystem. Closes ticket 18642. Patch by Neel Chauhan.
+
+ o Minor features (development):
+ - Tor's makefile now supports running the "clippy" Rust style tool
+ on our Rust code. Closes ticket 22156.
+
+ o Minor features (directory authority):
+ - There is no longer an artificial upper limit on the length of
+ bandwidth lines. Closes ticket 26223.
+ - When a bandwidth file is used to obtain the bandwidth measurements,
+ include this bandwidth file headers in the votes. Closes
+ ticket 3723.
+ - Improved support for networks with only a single authority or a
+ single fallback directory. Patch from Gabriel Somlo. Closes
+ ticket 25928.
+
+ o Minor features (embedding API):
+ - The Tor controller API now supports a function to launch Tor with
+ a preconstructed owning controller FD, so that embedding
+ applications don't need to manage controller ports and
+ authentication. Closes ticket 24204.
+ - The Tor controller API now has a function that returns the name
+ and version of the backend implementing the API. Closes
+ ticket 26947.
+
+ o Minor features (fallback directory list):
+ - Replace the 150 fallbacks originally introduced in Tor
+ 0.3.3.1-alpha in January 2018 (of which ~115 were still
+ functional), with a list of 157 fallbacks (92 new, 65 existing, 85
+ removed) generated in December 2018. Closes ticket 24803.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
+ Country database. Closes ticket 29012.
+
+ o Minor features (memory management):
+ - Get Libevent to use the same memory allocator as Tor, by calling
+ event_set_mem_functions() during initialization. Resolves
+ ticket 8415.
+
+ o Minor features (memory usage):
+ - When not using them, store legacy TAP public onion keys in DER-
+ encoded format, rather than as expanded public keys. This should
+ save several megabytes on typical clients. Closes ticket 27246.
+
+ o Minor features (OpenSSL bug workaround):
+ - Work around a bug in OpenSSL 1.1.1a, which prevented the TLS 1.3
+ key export function from handling long labels. When this bug is
+ detected, Tor will disable TLS 1.3. We recommend upgrading to a
+ version of OpenSSL without this bug when it becomes available.
+ Closes ticket 28973.
+
+ o Minor features (OpenSSL):
+ - When possible, use RFC5869 HKDF implementation from OpenSSL rather
+ than our own. Resolves ticket 19979.
+
+ o Minor features (performance):
+ - Remove about 96% of the work from the function that we run at
+ startup to test our curve25519_basepoint implementation. Since
+ this function has yet to find an actual failure, we now only run
+ it for 8 iterations instead of 200. Based on our profile
+ information, this change should save around 8% of our startup time
+ on typical desktops, and may have a similar effect on other
+ platforms. Closes ticket 28838.
+ - Stop re-validating our hardcoded Diffie-Hellman parameters on
+ every startup. Doing this wasted time and cycles, especially on
+ low-powered devices. Closes ticket 28851.
+
+ o Minor features (Rust, code quality):
+ - Improve rust code quality in the rust protover implementation by
+ making it more idiomatic. Includes changing an internal API to
+ take &str instead of &String. Closes ticket 26492.
+
+ o Minor features (testing):
+ - Add scripts/test/chutney-git-bisect.sh, for bisecting using
+ chutney. Implements ticket 27211.
+
+ o Minor features (tor-resolve):
+ - The tor-resolve utility can now be used with IPv6 SOCKS proxies.
+ Side-effect of the refactoring for ticket 26526.
+
+ o Minor features (UI):
+ - Log each included configuration file or directory as we read it,
+ to provide more visibility about where Tor is reading from. Patch
+ from Unto Sten; closes ticket 27186.
+ - Lower log level of "Scheduler type KIST has been enabled" to INFO.
+ Closes ticket 26703.
+
+ o Minor bugfixes (32-bit OSX and iOS, timing):
+ - Fix an integer overflow bug in our optimized 32-bit millisecond-
+ difference algorithm for 32-bit Apple platforms. Previously, it
+ would overflow when calculating the difference between two times
+ more than 47 days apart. Fixes part of bug 27139; bugfix
+ on 0.3.4.1-alpha.
+ - Improve the precision of our 32-bit millisecond difference
+ algorithm for 32-bit Apple platforms. Fixes part of bug 27139;
+ bugfix on 0.3.4.1-alpha.
+ - Relax the tolerance on the mainloop/update_time_jumps test when
+ running on 32-bit Apple platforms. Fixes part of bug 27139; bugfix
+ on 0.3.4.1-alpha.
+
+ o Minor bugfixes (bootstrap):
+ - Try harder to get descriptors in non-exit test networks, by using
+ the mid weight for the third hop when there are no exits. Fixes
+ bug 27237; bugfix on 0.2.6.2-alpha.
+
+ o Minor bugfixes (C correctness):
+ - Avoid casting smartlist index to int implicitly, as it may trigger
+ a warning (-Wshorten-64-to-32). Fixes bug 26282; bugfix on
+ 0.2.3.13-alpha, 0.2.7.1-alpha and 0.2.1.1-alpha.
+ - Use time_t for all values in
+ predicted_ports_prediction_time_remaining(). Rework the code that
+ computes difference between durations/timestamps. Fixes bug 27165;
+ bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (client, memory usage):
+ - When not running as a directory cache, there is no need to store
+ the text of the current consensus networkstatus in RAM.
+ Previously, however, clients would store it anyway, at a cost of
+ over 5 MB. Now, they do not. Fixes bug 27247; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (client, ReachableAddresses):
+ - Instead of adding a "reject *:*" line to ReachableAddresses when
+ loading the configuration, add one to the policy after parsing it
+ in parse_reachable_addresses(). This prevents extra "reject *.*"
+ lines from accumulating on reloads. Fixes bug 20874; bugfix on
+ 0.1.1.5-alpha. Patch by Neel Chauhan.
+
+ o Minor bugfixes (code quality):
+ - Rename sandbox_getaddrinfo() and other functions to no longer
+ misleadingly suggest that they are sandbox-only. Fixes bug 26525;
+ bugfix on 0.2.7.1-alpha.
+
+ o Minor bugfixes (code safety):
+ - Rewrite our assertion macros so that they no longer suppress the
+ compiler's -Wparentheses warnings. Fixes bug 27709; bugfix
+ on 0.0.6.
+
+ o Minor bugfixes (compilation):
+ - Initialize a variable unconditionally in aes_new_cipher(), since
+ some compilers cannot tell that we always initialize it before
+ use. Fixes bug 28413; bugfix on 0.2.9.3-alpha.
+
+ o Minor bugfixes (configuration):
+ - Refuse to start with relative file paths and RunAsDaemon set
+ (regression from the fix for bug 22731). Fixes bug 28298; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (configuration, Onion Services):
+ - In rend_service_parse_port_config(), disallow any input to remain
+ after address-port pair was parsed. This will catch address and
+ port being whitespace-separated by mistake of the user. Fixes bug
+ 27044; bugfix on 0.2.9.10.
+
+ o Minor bugfixes (connection, relay):
+ - Avoid a logging a BUG() stacktrace when closing connection held
+ open because the write side is rate limited but not the read side.
+ Now, the connection read side is simply shut down until Tor is
+ able to flush the connection and close it. Fixes bug 27750; bugfix
+ on 0.3.4.1-alpha.
+
+ o Minor bugfixes (continuous integration, Windows):
+ - Stop reinstalling identical packages in our Windows CI. Fixes bug
+ 27464; bugfix on 0.3.4.1-alpha.
+ - Install only the necessary mingw packages during our appveyor
+ builds. This change makes the build a little faster, and prevents
+ a conflict with a preinstalled mingw openssl that appveyor now
+ ships. Fixes bugs 27765 and 27943; bugfix on 0.3.4.2-alpha.
+ - Explicitly specify the path to the OpenSSL library and do not
+ download OpenSSL from Pacman, but instead use the library that is
+ already provided by AppVeyor. Fixes bug 28574; bugfix on master.
+ - Manually configure the zstd compiler options, when building using
+ mingw on Appveyor Windows CI. The MSYS2 mingw zstd package does
+ not come with a pkg-config file. Fixes bug 28454; bugfix
+ on 0.3.4.1-alpha.
+ - Stop using an external OpenSSL install, and stop installing MSYS2
+ packages, when building using mingw on Appveyor Windows CI. Fixes
+ bug 28399; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (controller):
+ - Consider all routerinfo errors other than "not a server" to be
+ transient for the purpose of "GETINFO exit-policy/*" controller
+ request. Print stacktrace in the unlikely case of failing to
+ recompute routerinfo digest. Fixes bug 27034; bugfix
+ on 0.3.4.1-alpha.
+
+ o Minor bugfixes (correctness):
+ - Fix an unreached code path where we checked the value of
+ "hostname" inside send_resolved_hostname_cell(). Previously, we
+ used it before checking it; now we check it first. Fixes bug
+ 28879; bugfix on 0.1.2.7-alpha.
+
+ o Minor bugfixes (directory connection shutdown):
+ - Avoid a double-close when shutting down a stalled directory
+ connection. Fixes bug 26896; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (directory permissions):
+ - When a user requests a group-readable DataDirectory, give it to
+ them. Previously, when the DataDirectory and the CacheDirectory
+ were the same, the default setting (0) for
+ CacheDirectoryGroupReadable would override the setting for
+ DataDirectoryGroupReadable. Fixes bug 26913; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (HTTP tunnel):
+ - Fix a bug warning when closing an HTTP tunnel connection due to an
+ HTTP request we couldn't handle. Fixes bug 26470; bugfix
+ on 0.3.2.1-alpha.
+
+ o Minor bugfixes (ipv6):
+ - In addrs_in_same_network_family(), we choose the subnet size based
+ on the IP version (IPv4 or IPv6). Previously, we chose a fixed
+ subnet size of /16 for both IPv4 and IPv6 addresses. Fixes bug
+ 15518; bugfix on 0.2.3.1-alpha. Patch by Neel Chauhan.
+
+ o Minor bugfixes (Linux seccomp2 sandbox):
+ - Permit the "shutdown()" system call, which is apparently used by
+ OpenSSL under some circumstances. Fixes bug 28183; bugfix
+ on 0.2.5.1-alpha.
+
+ o Minor bugfixes (logging):
+ - Stop talking about the Named flag in log messages. Clients have
+ ignored the Named flag since 0.3.2. Fixes bug 28441; bugfix
+ on 0.3.2.1-alpha.
+ - As a precaution, do an early return from log_addr_has_changed() if
+ Tor is running as client. Also, log a stack trace for debugging as
+ this function should only be called when Tor runs as server. Fixes
+ bug 26892; bugfix on 0.1.1.9-alpha.
+ - Refrain from mentioning bug 21018 in the logs, as it is already
+ fixed. Fixes bug 25477; bugfix on 0.2.9.8.
+
+ o Minor bugfixes (logging, documentation):
+ - When SafeLogging is enabled, scrub IP address in
+ channel_tls_process_netinfo_cell(). Also, add a note to manpage
+ that scrubbing is not guaranteed on loglevels below Notice. Fixes
+ bug 26882; bugfix on 0.2.4.10-alpha.
+
+ o Minor bugfixes (memory leaks):
+ - Fix a harmless memory leak in libtorrunner.a. Fixes bug 28419;
+ bugfix on 0.3.3.1-alpha. Patch from Martin Kepplinger.
+ - Fix a small memory leak when calling Tor with --dump-config. Fixes
+ bug 27893; bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (netflow padding):
+ - Ensure circuitmux queues are empty before scheduling or sending
+ padding. Fixes bug 25505; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (onion service v2):
+ - Log at level "info", not "warning", in the case that we do not
+ have a consensus when a .onion request comes in. This can happen
+ normally while bootstrapping. Fixes bug 27040; bugfix
+ on 0.2.8.2-alpha.
+
+ o Minor bugfixes (onion service v3):
+ - When deleting an ephemeral onion service (DEL_ONION), do not close
+ any rendezvous circuits in order to let the existing client
+ connections finish by themselves or closed by the application. The
+ HS v2 is doing that already so now we have the same behavior for
+ all versions. Fixes bug 28619; bugfix on 0.3.3.1-alpha.
+ - Build the service descriptor's signing key certificate before
+ uploading, so we always have a fresh one: leaving no chances for
+ it to expire service side. Fixes bug 27838; bugfix
+ on 0.3.2.1-alpha.
+ - Stop dumping a stack trace when trying to connect to an intro
+ point without having a descriptor for it. Fixes bug 27774; bugfix
+ on 0.3.2.1-alpha.
+ - When selecting a v3 rendezvous point, don't only look at the
+ protover, but also check whether the curve25519 onion key is
+ present. This way we avoid picking a relay that supports the v3
+ rendezvous but for which we don't have the microdescriptor. Fixes
+ bug 27797; bugfix on 0.3.2.1-alpha.
+ - Close all SOCKS request (for the same .onion) if the newly fetched
+ descriptor is unusable. Before that, we would close only the first
+ one leaving the other hanging and let to time out by themselves.
+ Fixes bug 27410; bugfix on 0.3.2.1-alpha.
+ - When the onion service directory can't be created or has the wrong
+ permissions, do not log a stack trace. Fixes bug 27335; bugfix
+ on 0.3.2.1-alpha.
+ - When replacing a descriptor in the client cache, make sure to
+ close all client introduction circuits for the old descriptor, so
+ we don't end up with unusable leftover circuits. Fixes bug 27471;
+ bugfix on 0.3.2.1-alpha.
+
+ o Minor bugfixes (OS compatibility):
+ - Properly handle configuration changes that move a listener to/from
+ wildcard IP address. If the first attempt to bind a socket fails,
+ close the old listener and try binding the socket again. Fixes bug
+ 17873; bugfix on 0.0.8pre-1.
+
+ o Minor bugfixes (performance)::
+ - Rework node_is_a_configured_bridge() to no longer call
+ node_get_all_orports(), which was performing too many memory
+ allocations. Fixes bug 27224; bugfix on 0.2.3.9.
+
+ o Minor bugfixes (protover):
+ - Reject protocol names containing bytes other than alphanumeric
+ characters and hyphens ([A-Za-z0-9-]). Fixes bug 27316; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (protover, rust):
+ - Reject extra commas in version strings. Fixes bug 27197; bugfix
+ on 0.3.3.3-alpha.
+ - protover_all_supported() would attempt to allocate up to 16GB on
+ some inputs, leading to a potential memory DoS. Fixes bug 27206;
+ bugfix on 0.3.3.5-rc.
+ - Compute protover votes correctly in the rust version of the
+ protover code. Previously, the protover rewrite in 24031 allowed
+ repeated votes from the same voter for the same protocol version
+ to be counted multiple times in protover_compute_vote(). Fixes bug
+ 27649; bugfix on 0.3.3.5-rc.
+ - Reject protover names that contain invalid characters. Fixes bug
+ 27687; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (relay shutdown, systemd):
+ - Notify systemd of ShutdownWaitLength so it can be set to longer
+ than systemd's TimeoutStopSec. In Tor's systemd service file, set
+ TimeoutSec to 60 seconds to allow Tor some time to shut down.
+ Fixes bug 28113; bugfix on 0.2.6.2-alpha.
+
+ o Minor bugfixes (relay statistics):
+ - Update relay descriptor on bandwidth changes only when the uptime
+ is smaller than 24h, in order to reduce the efficiency of guard
+ discovery attacks. Fixes bug 24104; bugfix on 0.1.1.6-alpha.
+
+ o Minor bugfixes (relay):
+ - Consider the fact that we'll be making direct connections to our
+ entry and guard nodes when computing the fraction of nodes that
+ have their descriptors. Also, if we are using bridges and there is
+ at least one bridge with a full descriptor, treat the fraction of
+ guards available as 100%. Fixes bug 25886; bugfix on 0.2.4.10-alpha.
+ Patch by Neel Chauhan.
+ - Update the message logged on relays when DirCache is disabled.
+ Since 0.3.3.5-rc, authorities require DirCache (V2Dir) for the
+ Guard flag. Fixes bug 24312; bugfix on 0.3.3.5-rc.
+
+ o Minor bugfixes (testing):
+ - Stop running stem's unit tests as part of "make test-stem", but
+ continue to run stem's unit and online tests during "make test-
+ stem-full". Fixes bug 28568; bugfix on 0.2.6.3-alpha.
+ - Stop leaking memory in an entry guard unit test. Fixes bug 28554;
+ bugfix on 0.3.0.1-alpha.
+ - Make the hs_service tests use the same time source when creating
+ the introduction point and when testing it. Now tests work better
+ on very slow systems like ARM or Travis. Fixes bug 27810; bugfix
+ on 0.3.2.1-alpha.
+ - Revise the "conditionvar_timeout" test so that it succeeds even on
+ heavily loaded systems where the test threads are not scheduled
+ within 200 msec. Fixes bug 27073; bugfix on 0.2.6.3-alpha.
+ - Fix two unit tests to work when HOME environment variable is not
+ set. Fixes bug 27096; bugfix on 0.2.8.1-alpha.
+ - If a unit test running in a subprocess exits abnormally or with a
+ nonzero status code, treat the test as having failed, even if the
+ test reported success. Without this fix, memory leaks don't cause
+ the tests to fail, even with LeakSanitizer. Fixes bug 27658;
+ bugfix on 0.2.2.4-alpha.
+ - When logging a version mismatch in our openssl_version tests,
+ report the actual offending version strings. Fixes bug 26152;
+ bugfix on 0.2.9.1-alpha.
+ - Fix forking tests on Windows when there is a space somewhere in
+ the path. Fixes bug 26437; bugfix on 0.2.2.4-alpha.
+
+ o Minor bugfixes (Windows):
+ - Correctly identify Windows 8.1, Windows 10, and Windows Server
+ 2008 and later from their NT versions. Fixes bug 28096; bugfix on
+ 0.2.2.34; reported by Keifer Bly.
+ - On recent Windows versions, the GetVersionEx() function may report
+ an earlier Windows version than the running OS. To avoid user
+ confusion, add "[or later]" to Tor's version string on affected
+ versions of Windows. Fixes bug 28096; bugfix on 0.2.2.34; reported
+ by Keifer Bly.
+ - Remove Windows versions that were never supported by the
+ GetVersionEx() function. Stop duplicating the latest Windows
+ version in get_uname(). Fixes bug 28096; bugfix on 0.2.2.34;
+ reported by Keifer Bly.
+
+ o Code simplification and refactoring:
+ - When parsing a port configuration, make it more obvious to static
+ analyzer tools that we always initialize the address. Closes
+ ticket 28881.
+ - Divide more large Tor source files -- especially ones that span
+ multiple areas of functionality -- into smaller parts, including
+ onion.c and main.c. Closes ticket 26747.
+ - Divide the "routerparse.c" module into separate modules for each
+ group of parsed objects. Closes ticket 27924.
+ - Move protover_rust.c to the same place protover.c was moved to.
+ Closes ticket 27814.
+ - Split directory.c into separate pieces for client, server, and
+ common functionality. Closes ticket 26744.
+ - Split the non-statistics-related parts from the rephist.c and
+ geoip.c modules. Closes ticket 27892.
+ - Split the router.c file into relay-only and shared components, to
+ help with future modularization. Closes ticket 27864.
+ - Divide the routerlist.c and dirserv.c modules into smaller parts.
+ Closes ticket 27799.
+ - 'updateFallbackDirs.py' now ignores the blacklist file, as it's not
+ longer needed. Closes ticket 26502.
+ - Include paths to header files within Tor are now qualified by
+ directory within the top-level src directory.
+ - Many structures have been removed from the centralized "or.h"
+ header, and moved into their own headers. This will allow us to
+ reduce the number of places in the code that rely on each
+ structure's contents and layout. Closes ticket 26383.
+ - Remove ATTR_NONNULL macro from codebase. Resolves ticket 26527.
+ - Remove GetAdaptersAddresses_fn_t. The code that used it was
+ removed as part of the 26481 refactor. Closes ticket 27467.
+ - Rework Tor SOCKS server code to use Trunnel and benefit from
+ autogenerated functions for parsing and generating SOCKS wire
+ format. New implementation is cleaner, more maintainable and
+ should be less prone to heartbleed-style vulnerabilities.
+ Implements a significant fraction of ticket 3569.
+ - Split sampled_guards_update_from_consensus() and
+ select_entry_guard_for_circuit() into subfunctions. In
+ entry_guards_update_primary() unite three smartlist enumerations
+ into one and move smartlist comparison code out of the function.
+ Closes ticket 21349.
+ - Tor now assumes that you have standards-conformant stdint.h and
+ inttypes.h headers when compiling. Closes ticket 26626.
+ - Unify our bloom filter logic. Previously we had two copies of this
+ code: one for routerlist filtering, and one for address set
+ calculations. Closes ticket 26510.
+ - Use the simpler strcmpstart() helper in
+ rend_parse_v2_service_descriptor instead of strncmp(). Closes
+ ticket 27630.
+ - Utility functions that can perform a DNS lookup are now wholly
+ separated from those that can't, in separate headers and C
+ modules. Closes ticket 26526.
+
+ o Documentation:
+ - In the tor-resolve(1) manpage, fix the reference to socks-
+ extensions.txt by adding a web URL. Resolves ticket 27853.
+ - Mention that we require Python to be 2.7 or newer for some
+ integration tests that we ship with Tor. Resolves ticket 27677.
+ - Copy paragraph and URL to Tor's code of conduct document from
+ CONTRIBUTING to new CODE_OF_CONDUCT file. Resolves ticket 26638.
+ - Remove old instructions from INSTALL document. Closes ticket 26588.
+ - Warn users that they should not include MyFamily line(s) in their
+ torrc when running Tor bridge. Closes ticket 26908.
+
+ o Removed features:
+ - Tor no longer supports building with the dmalloc library. For
+ debugging memory issues, we suggest using gperftools or msan
+ instead. Closes ticket 26426.
+ - Tor no longer attempts to run on Windows environments without the
+ GetAdaptersAddresses() function. This function has existed since
+ Windows XP, which is itself already older than we support.
+ - Remove Tor2web functionality for version 2 onion services. The
+ Tor2webMode and Tor2webRendezvousPoints options are now obsolete.
+ (This feature was never shipped in vanilla Tor and it was only
+ possible to use this feature by building the support at compile
+ time. Tor2webMode is not implemented for version 3 onion services.)
+ Closes ticket 26367.
+
+ o Testing:
+ - Increase logging and tag all log entries with timestamps in
+ test_rebind.py. Provides diagnostics for issue 28229.
+
+ o Code simplification and refactoring (shared random, dirauth):
+ - Change many tor_assert() to use BUG() instead. The idea is to not
+ crash a dirauth but rather scream loudly with a stacktrace and let
+ it continue run. The shared random subsystem is very resilient and
+ if anything wrong happens with it, at worst a non coherent value
+ will be put in the vote and discarded by the other authorities.
+ Closes ticket 19566.
+
+ o Documentation (onion services):
+ - Improve HSv3 client authorization by making some options more
+ explicit and detailed. Closes ticket 28026. Patch by Mike Tigas.
+ - Document in the man page that changing ClientOnionAuthDir value or
+ adding a new file in the directory will not work at runtime upon
+ sending a HUP if Sandbox 1. Closes ticket 28128.
+ - Note in the man page that the only real way to fully revoke an
+ onion service v3 client authorization is by restarting the tor
+ process. Closes ticket 28275.
+
+
Changes in version 0.3.4.9 - 2018-11-02
Tor 0.3.4.9 is the second stable release in its series; it backports
numerous fixes, including a fix for a bandwidth management bug that
diff --git a/acinclude.m4 b/acinclude.m4
index c9cfc3f014..5ecdf1d5c2 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2,7 +2,7 @@ dnl Helper macros for Tor configure.ac
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
dnl Copyright (c) 2007-2008, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2018, The Tor Project, Inc.
+dnl Copyright (c) 2007-2019, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_DEFUN([TOR_EXTEND_CODEPATH],
diff --git a/autogen.sh b/autogen.sh
index 276dd4047c..63ef6d49ef 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,9 +1,9 @@
#!/bin/sh
-if [ -x "`which autoreconf 2>/dev/null`" ] ; then
+if command -v autoreconf; then
opt="-i -f -W all,error"
- for i in $@; do
+ for i in "$@"; do
case "$i" in
-v)
opt="${opt} -v"
@@ -11,6 +11,7 @@ if [ -x "`which autoreconf 2>/dev/null`" ] ; then
esac
done
+ # shellcheck disable=SC2086
exec autoreconf $opt
fi
diff --git a/changes/bug21900 b/changes/bug21900
deleted file mode 100644
index 686cb6c584..0000000000
--- a/changes/bug21900
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (DNS):
- - Gracefully handle empty or absent resolve.conf file by falling
- back to using localhost DNS service and hoping it works. Fixes
- bug 21900; bugfix on 0.2.1.10-alpha.
diff --git a/changes/bug23082 b/changes/bug23082
deleted file mode 100644
index fc4b52c364..0000000000
--- a/changes/bug23082
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (networking):
- - Introduce additional checks into tor_addr_parse() to
- reject certain incorrect inputs that previously were
- not detected. Fixes bug 23082; bugfix on 0.2.0.10-alpha.
diff --git a/changes/bug24393 b/changes/bug24393
deleted file mode 100644
index e190192319..0000000000
--- a/changes/bug24393
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor features (ipv6):
- - When using addrs_in_same_network_family(), check IPv6 subnets as well as
- IPv4 ones where possible when a client chooses circuit paths. Previously,
- we used this function only for IPv4 subnets. Closes ticket 24393. Patch
- by Neel Chauhan.
-
diff --git a/changes/bug24661 b/changes/bug24661
deleted file mode 100644
index a915a93e0e..0000000000
--- a/changes/bug24661
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (client, guard selection):
- - When Tor's consensus has expired, but is still reasonably live, use it
- to select guards. Fixes bug 24661; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug25885 b/changes/bug25885
deleted file mode 100644
index 1b89acfe06..0000000000
--- a/changes/bug25885
+++ /dev/null
@@ -1,7 +0,0 @@
- o Minor bugfixes (guards):
- - In count_acceptable_nodes(), check if we have at least one bridge
- or guard node, and two non-guard nodes for a circuit. Previously,
- we have added up the sum of all nodes with a descriptor, but that
- could cause us to build circuits that fail if we had either too
- many bridges, or not enough guard nodes. Fixes bug 25885; bugfix
- on 0.3.6.1-alpha. Patch by Neel Chauhan.
diff --git a/changes/bug27707 b/changes/bug27707
deleted file mode 100644
index e114222741..0000000000
--- a/changes/bug27707
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (log messages):
- - Improve log message in HSv3 service that could print out negative
- revision counters. Closes ticket 27707. Patch by "ffmancera". \ No newline at end of file
diff --git a/changes/bug27929 b/changes/bug27929
deleted file mode 100644
index dab57a2eca..0000000000
--- a/changes/bug27929
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (periodic events):
- - Refrain from calling routerlist_remove_old_routers() from
- check_descriptor_callback(). Instead, create a new periodic
- event that will run once every hour even if Tor is not configured
- as onion router. Fixes bug 27929; bugfix on 0.2.8.1-alpha.
diff --git a/changes/bug28518 b/changes/bug28518
deleted file mode 100644
index d7ebab29bb..0000000000
--- a/changes/bug28518
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (FreeBSD):
- - Warn relay operators if the "net.inet.ip.random_id" sysctl (IP ID
- randomization) is disabled on their relay if it is running on FreeBSD
- based operating systems. Closes ticket 28518.
diff --git a/changes/bug28569 b/changes/bug28569
deleted file mode 100644
index 45a57a80ae..0000000000
--- a/changes/bug28569
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (unit tests, directory clients):
- - Mark outdated dirservers when Tor only has a reasonably live consensus.
- Fixes bug 28569; bugfix on 0.3.2.5-alpha.
diff --git a/changes/bug28591 b/changes/bug28591
deleted file mode 100644
index 3a1c96ac16..0000000000
--- a/changes/bug28591
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (client, bootstrap):
- - When Tor's clock is behind the clocks on the authorities, allow Tor to
- bootstrap successfully. Fixes bug 28591; bugfix on 0.2.0.9-alpha.
-
diff --git a/changes/bug28654 b/changes/bug28654
deleted file mode 100644
index 4ca843309f..0000000000
--- a/changes/bug28654
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor bugfixes (directory mirror):
- - When Tor's clock is behind the clocks on the authorities, allow Tor to
- serve future consensuses. Fixes bug 28654; bugfix on 0.3.0.1-alpha.
diff --git a/changes/bug28895 b/changes/bug28895
deleted file mode 100644
index 25fb167b2e..0000000000
--- a/changes/bug28895
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (usability):
- - Stop saying "Your Guard ..." in pathbias_measure_{use,close}_rate()
- as that confusingly suggests that mentioned guard node is under control
- and responsibility of end user, which it is not. Fixes bug 28895;
- bugfix on Tor 0.3.0.1-alpha.
diff --git a/changes/bug28938 b/changes/bug28938
deleted file mode 100644
index de6c5f7b79..0000000000
--- a/changes/bug28938
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (compilation):
- - Fix missing headers required for proper detection of
- OpenBSD. Fixes bug 28938; bugfix on 0.3.5.1-alpha.
- Patch from Kris Katterjohn.
diff --git a/changes/bug28989 b/changes/bug28989
deleted file mode 100644
index 3e3ccccaf3..0000000000
--- a/changes/bug28989
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfixes (unit tests):
- - Instead of relying on hs_free_all() to clean up all onion service
- objects we created in test_build_descriptors(), deallocate
- them one by one. This lets Coverity know that we are not leaking memory
- here and fixes CID 1442277. Fixes bug 28989; bugfix on 0.3.5.1-alpha.
diff --git a/changes/bug28995 b/changes/bug28995
deleted file mode 100644
index f76b6a085a..0000000000
--- a/changes/bug28995
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor bugfix (IPv6):
- Fix tor_ersatz_socketpair on IPv6-only systems. Previously,
- the IPv6 socket was bound using an address family of AF_INET
- instead of AF_INET6. Fixes bug 28995; bugfix on 0.3.5.1-alpha.
- Patch from Kris Katterjohn.
diff --git a/changes/bug29061 b/changes/bug29061
new file mode 100644
index 0000000000..58fc4f22e9
--- /dev/null
+++ b/changes/bug29061
@@ -0,0 +1,4 @@
+ o Minor bugfixes (testing):
+ - Call setrlimit() to disable core dumps in test_bt_cl.c instead of
+ using `ulimit -c` in test_bt.sh, which violates POSIX shell
+ compatibility. Fixes bug 29061; bugfix on 0.3.5.1-alpha.
diff --git a/changes/bug29063 b/changes/bug29063
new file mode 100644
index 0000000000..8cbcbebc6e
--- /dev/null
+++ b/changes/bug29063
@@ -0,0 +1,2 @@
+ o Code simplification and refactoring (shell scripts):
+ - Fix issues shellcheck found in test_rebind.sh. Resolves issue 29063.
diff --git a/changes/doc28560 b/changes/doc28560
deleted file mode 100644
index c3356bda0a..0000000000
--- a/changes/doc28560
+++ /dev/null
@@ -1,3 +0,0 @@
- o Documentation (hidden service manpage, sandbox):
- - Mention that you cannot add new Onion Service if Tor is already
- running with Sandbox enabled. Closes ticket 28560.
diff --git a/changes/doc28805 b/changes/doc28805
deleted file mode 100644
index 6c9fea44fa..0000000000
--- a/changes/doc28805
+++ /dev/null
@@ -1,4 +0,0 @@
- o Documentation (manpage):
- - Improve ControlPort description in tor manpage to mention that it
- accepts address/port pair, and can be used multiple times. Closes ticket
- 28805.
diff --git a/changes/document_version b/changes/document_version
deleted file mode 100644
index a45992b6b5..0000000000
--- a/changes/document_version
+++ /dev/null
@@ -1,2 +0,0 @@
- o Documentation:
- - Document the exact output of "tor --version". Closes ticket 28889.
diff --git a/changes/feature27244 b/changes/feature27244
deleted file mode 100644
index a4debbbe53..0000000000
--- a/changes/feature27244
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features (memory usage):
- - Tor clients no longer need to keep the full text of a consensus in
- memory in order to parse it, or apply a diff to it. Instead, they
- use mmap() to read the consensus files from disk. Closes ticket
- 27244.
diff --git a/changes/feature27367 b/changes/feature27367
deleted file mode 100644
index 99c0839621..0000000000
--- a/changes/feature27367
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (parsing):
- - Directory authorities now validate that router descriptors and ExtraInfo
- documents are in a valid subset of UTF-8, and reject them if not.
- Closes ticket 27367.
diff --git a/changes/geoip-2019-01-03 b/changes/geoip-2019-01-03
deleted file mode 100644
index 27ffb7f460..0000000000
--- a/changes/geoip-2019-01-03
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 3 2019 Maxmind GeoLite2
- Country database. Closes ticket 29012.
-
diff --git a/changes/prop297 b/changes/prop297
deleted file mode 100644
index 4f93b232d2..0000000000
--- a/changes/prop297
+++ /dev/null
@@ -1,7 +0,0 @@
- o Minor features (required protocols):
- - Tor no longer exits if it is missing a required protocol, if the
- consensus that requires the protocol predates the release date of the
- version of Tor. This change prevents Tor releases from exiting because
- of an old cached consensus, on the theory that a newer cached
- consensus might not require the protocol. Implements proposal 297;
- closes ticket 27735.
diff --git a/changes/subsystems b/changes/subsystems
deleted file mode 100644
index a51fb8e2b1..0000000000
--- a/changes/subsystems
+++ /dev/null
@@ -1,6 +0,0 @@
- o Major features (refactoring):
- - Tor now uses an explicit list of its own subsystems when initializing
- and shutting down. Previously, these systems were managed implicitly
- though various places throughout the codebase. (There still some
- subsystems using the old system.)
- Closes ticket 28330.
diff --git a/changes/ticket24805 b/changes/ticket24805
deleted file mode 100644
index 4ba6f6ecd4..0000000000
--- a/changes/ticket24805
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (fallback directory list):
- - Update the fallback whitelist based on operator opt-ins and opt-outs.
- Closes ticket 24805, patch by Phoul.
diff --git a/changes/ticket24838 b/changes/ticket24838
deleted file mode 100644
index d068e31b91..0000000000
--- a/changes/ticket24838
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor features (fallback directory mirrors):
- - Accept relays that are a fuzzy match to a fallback whitelist entry.
- If a relay matches at least one fingerprint, IPv4 address, or IPv6
- address in the fallback whitelist, it can become a fallback. This
- reduces the work required to keep the list up to date.
- Closes ticket 24838.
diff --git a/changes/ticket25110 b/changes/ticket25110
new file mode 100644
index 0000000000..298e33287f
--- /dev/null
+++ b/changes/ticket25110
@@ -0,0 +1,4 @@
+ o Minor bugfixes (logging, configuration):
+ - Warn operators when MyFamily option is set but ContactInfo
+ is missing, as the latter should be set too.
+ Fixes bug 25110; bugfix on 0.3.3.1-alpha.
diff --git a/changes/ticket26069 b/changes/ticket26069
new file mode 100644
index 0000000000..caed9be348
--- /dev/null
+++ b/changes/ticket26069
@@ -0,0 +1,2 @@
+ o Code simplification and refactoring (shell scripts):
+ - Cleanup autogen.sh to silence shellcheck warnings. Closes ticket 26069.
diff --git a/changes/ticket26360 b/changes/ticket26360
deleted file mode 100644
index 80afbd1c17..0000000000
--- a/changes/ticket26360
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor bugfixes (pluggable transports):
- - Make sure that data is continously read from standard out and error of the
- PT child-process to avoid deadlocking when the pipes' buffer is full.
- Fixes bug 26360; bugfix on 0.2.3.6-alpha.
diff --git a/changes/ticket26770 b/changes/ticket26770
deleted file mode 100644
index 7f3e92e9dd..0000000000
--- a/changes/ticket26770
+++ /dev/null
@@ -1,8 +0,0 @@
- o Minor features (directory authority, relay):
- - Authorities now vote on a "StaleDesc" flag to indicate that a relay's
- descriptor is so old that the relay should upload again soon. Relays
- understand this flag, and treat it as a signal to upload a new
- descriptor. This flag will eventually let us remove the 'published'
- date from routerstatus entries, and save a great deal of space in our
- consensus diffs. Closes ticket 26770; implements proposal 293.
-
diff --git a/changes/ticket27167 b/changes/ticket27167
deleted file mode 100644
index 81c66630c8..0000000000
--- a/changes/ticket27167
+++ /dev/null
@@ -1,11 +0,0 @@
- o Major features (bootstrap):
- - Report the first connection to a relay as the earliest phases of
- bootstrap progress, regardless of whether it's a connection for
- building application circuits. This allows finer-grained
- reporting of early progress than previously possible with the
- improvements of ticket 27169. Closes tickets 27167 and 27103.
- Addresses ticket 27308.
- - Separately report the intermediate stage of having connected to
- a proxy or pluggable transport, versus succesfully using that
- proxy or pluggable transport to connect to a relay. Closes
- tickets 27100 and 28884.
diff --git a/changes/ticket27225 b/changes/ticket27225
deleted file mode 100644
index 4c05a269d6..0000000000
--- a/changes/ticket27225
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features (performance):
- - Avoid parsing the same protocol-versions string over and over
- in summarize_protover_flags(). This should save us a huge number
- of malloc calls on startup, and may reduce memory fragmentation with
- some allocators. Closes ticket 27225.
diff --git a/changes/ticket27325 b/changes/ticket27325
deleted file mode 100644
index 2cf2bb7d69..0000000000
--- a/changes/ticket27325
+++ /dev/null
@@ -1,4 +0,0 @@
- o Code simplification and refactoring:
- - Reimplement NETINFO cell parsing and generation to rely on
- trunnel-generated wire format handling code. Closes ticket
- 27325.
diff --git a/changes/ticket27359 b/changes/ticket27359
deleted file mode 100644
index bddc90634d..0000000000
--- a/changes/ticket27359
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (memory usage):
- - Store microdescriptor family lists with a more compact representation
- to save memory. Closes ticket 27359.
diff --git a/changes/ticket27402 b/changes/ticket27402
deleted file mode 100644
index b79fb56760..0000000000
--- a/changes/ticket27402
+++ /dev/null
@@ -1,10 +0,0 @@
- o Minor feature (bootstrap):
- - When reporting bootstrap progress, stop distinguishing between
- situations where it seems that only internal paths are available
- and situations where it seems that external paths are available.
- Previously, tor would often erroneously report that it had only
- internal paths. Closes ticket 27402.
-
- o Code simplification and refactoring:
- - Split out bootstrap progress reporting from control.c into a
- separate file. Part of ticket 27402.
diff --git a/changes/ticket27490 b/changes/ticket27490
deleted file mode 100644
index 523477dfea..0000000000
--- a/changes/ticket27490
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor features (ipv6):
- - We add an option ClientAutoIPv6ORPort which makes clients randomly
- prefer a node's IPv4 or IPv6 ORPort. The random preference is set
- every time a node is loaded from a new consensus or bridge config.
- Closes ticket 27490. Patch by Neel Chauhan.
-
diff --git a/changes/ticket27549 b/changes/ticket27549
deleted file mode 100644
index 51d0f24757..0000000000
--- a/changes/ticket27549
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring (hidden service v3):
- - Consolidate the authorized client descriptor cookie computation code
- from client and service into one function. Closes ticket 27549.
diff --git a/changes/ticket27620 b/changes/ticket27620
deleted file mode 100644
index 6c491696d0..0000000000
--- a/changes/ticket27620
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Rework SOCKS wire format handling to rely on trunnel-generated
- parsing/generation code. Resolves ticket 27620.
diff --git a/changes/ticket27625 b/changes/ticket27625
deleted file mode 100644
index 33d40adf34..0000000000
--- a/changes/ticket27625
+++ /dev/null
@@ -1,4 +0,0 @@
- o Testing:
- - Write some unit tests for tokenize_string() and
- get_next_token() functions. Resolves ticket 27625.
-
diff --git a/changes/ticket27993 b/changes/ticket27993
deleted file mode 100644
index 78ee7c2054..0000000000
--- a/changes/ticket27993
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (developer tooling):
- - Provide git hook script to prevent "fixup!" and "squash!" commits from
- ending up in master. Closes ticket 27993.
diff --git a/changes/ticket28006 b/changes/ticket28006
deleted file mode 100644
index 95a4b2cae4..0000000000
--- a/changes/ticket28006
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix issues that shellcheck found in chutney-git-bisect.sh.
- Resolves ticket 28006.
diff --git a/changes/ticket28007 b/changes/ticket28007
deleted file mode 100644
index 1ac87862eb..0000000000
--- a/changes/ticket28007
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Cleanup scan-build.sh to silence shellcheck warnings.
- Closes ticket 28007.
diff --git a/changes/ticket28008 b/changes/ticket28008
deleted file mode 100644
index 1f0de1a14d..0000000000
--- a/changes/ticket28008
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix shellcheck warnings in scripts/test/coverage. Resolves issue
- 28008.
diff --git a/changes/ticket28009 b/changes/ticket28009
deleted file mode 100644
index 1d986d4211..0000000000
--- a/changes/ticket28009
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix shellcheck warnings in cov-diff script. Resolves issue
- 28009.
diff --git a/changes/ticket28010 b/changes/ticket28010
deleted file mode 100644
index 4fca17d022..0000000000
--- a/changes/ticket28010
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix shellcheck warnings in run_trunnel.sh. Resolves issue
- 28010.
diff --git a/changes/ticket28011 b/changes/ticket28011
deleted file mode 100644
index 5efc3c917b..0000000000
--- a/changes/ticket28011
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix shellcheck warnings in run_calltool.sh. Resolves
- ticket 28011.
diff --git a/changes/ticket28012 b/changes/ticket28012
deleted file mode 100644
index b2fe83e02a..0000000000
--- a/changes/ticket28012
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Fix issues that shellcheck found in updateRustDependencies.sh.
- Resolves ticket 28012.
diff --git a/changes/ticket28077 b/changes/ticket28077
deleted file mode 100644
index 2b5afb1678..0000000000
--- a/changes/ticket28077
+++ /dev/null
@@ -1,3 +0,0 @@
- o Code simplification and refactoring:
- - Remove unnecessarily unsafe code from the rust macro cstr!. Closes
- ticket 28077.
diff --git a/changes/ticket28100 b/changes/ticket28100
deleted file mode 100644
index b8e3271013..0000000000
--- a/changes/ticket28100
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (HTTP standards compliance):
- - Don't send Content-Type: application/octet-stream for transparently
- compressed documents, which confused browsers. Closes ticket 28100.
diff --git a/changes/ticket28179 b/changes/ticket28179
deleted file mode 100644
index f548c4a79a..0000000000
--- a/changes/ticket28179
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features (process):
- - Add new Process API for handling child processes. This
- new API allows Tor to have bi-directional
- communication with child processes on both Unix and Windows.
- Closes ticket 28179.
diff --git a/changes/ticket28180 b/changes/ticket28180
deleted file mode 100644
index 59de1c6251..0000000000
--- a/changes/ticket28180
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (pluggable transports):
- - Add support for logging to Tor's logging subsystem from a pluggable
- transport process. Closes ticket 28180
diff --git a/changes/ticket28266 b/changes/ticket28266
deleted file mode 100644
index e0bc171080..0000000000
--- a/changes/ticket28266
+++ /dev/null
@@ -1,10 +0,0 @@
- o Minor features (directory authority):
- - Directory authorities support a new consensus algorithm,
- under which microdescriptor entries are encoded in a canonical
- form. This improves their compressibility in transit and on the client.
- Closes ticket 28266; implements proposal 298.
-
- o Minor features (relay):
- - When listing relay families, list them in canonical form including the
- relay's own identity, and try to give a more useful set of warnings.
- Part of ticket 28266 and proposal 298.
diff --git a/changes/ticket28335 b/changes/ticket28335
deleted file mode 100644
index eecf7c7fd9..0000000000
--- a/changes/ticket28335
+++ /dev/null
@@ -1,7 +0,0 @@
- o Major features (client):
- - When Tor is running as a client, and it is unused for a long time, it
- can now enter a "dormant" state. When Tor is dormant, it avoids
- network activity and CPU wakeups until it is reawoken either by a user
- request or by a controller command. For more information, see
- the configuration options starting with "Dormant". Implements tickets
- 2149 and 28335.
diff --git a/changes/ticket28362 b/changes/ticket28362
deleted file mode 100644
index 4ac22d50f2..0000000000
--- a/changes/ticket28362
+++ /dev/null
@@ -1,6 +0,0 @@
- o Code simplification and refactoring:
- - The .may_include files that we use to describe our
- directory-by-directory dependency structure now describe a noncircular
- dependency graph over the directories that they cover.
- Our checkIncludes.py tool now enforces this.
- Closes ticket 28362.
diff --git a/changes/ticket28551 b/changes/ticket28551
deleted file mode 100644
index 46ba9d713b..0000000000
--- a/changes/ticket28551
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (Continuous Integration):
- - Log Python version during each Travis CI job. Resolves issue
- 28551.
diff --git a/changes/ticket28624 b/changes/ticket28624
deleted file mode 100644
index 353f962be9..0000000000
--- a/changes/ticket28624
+++ /dev/null
@@ -1,5 +0,0 @@
- o Minor features (battery management, client, dormant mode):
- - The client's memory of whether it is "dormant", and how long it has
- spend idle, persists across invocations. Implements ticket 28624.
- - There is a DormantOnFirstStartup option that integrators can use if
- they expect that in many cases, Tor will be installed but not used.
diff --git a/changes/ticket28669 b/changes/ticket28669
deleted file mode 100644
index 32c6114ffc..0000000000
--- a/changes/ticket28669
+++ /dev/null
@@ -1,6 +0,0 @@
- o Minor bugfix (hidden service v3, client):
- - Avoid a BUG() stacktrace in case a SOCKS connection is found waiting for
- the descriptor while we do have it in the cache. There is a rare case
- when this can happen. Now, tor will recover and retry the descriptor.
- Fixes bug 28669; bugfix on 0.3.2.4-alpha.
-
diff --git a/changes/ticket28757 b/changes/ticket28757
deleted file mode 100644
index 62c6d099ff..0000000000
--- a/changes/ticket28757
+++ /dev/null
@@ -1,5 +0,0 @@
- o Removed features:
- - Stop responding to 'GETINFO status/version/num-concurring' and
- 'GETINFO status/version/num-versioning' control port commands, as those
- were deprecated back in 0.2.0.30. Also stop listing them in output of
- 'GETINFO info/names'. Resolves ticket 28757.
diff --git a/changes/ticket28768 b/changes/ticket28768
deleted file mode 100644
index 27d90febc8..0000000000
--- a/changes/ticket28768
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (fallback directory mirrors):
- - Accept fallbacks that deliver reasonably live consensuses.
- (Consensuses that will become valid less than 24 hours in the future,
- or that expired less than 24 hours ago.) Closes ticket 28768.
diff --git a/changes/ticket28816 b/changes/ticket28816
new file mode 100644
index 0000000000..02878ccfdc
--- /dev/null
+++ b/changes/ticket28816
@@ -0,0 +1,4 @@
+ o Code simplification and refactoring:
+ - Introduce a connection_dir_buf_add() helper function that checks for
+ compress_state of dir_connection_t and automatically writes a string to
+ directory connection with or without compression. Resolves issue 28816.
diff --git a/changes/ticket28839 b/changes/ticket28839
deleted file mode 100644
index e9f81dc405..0000000000
--- a/changes/ticket28839
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (performance):
- - Speed up microdesriptor parsing by about 30%, to help
- improve startup time. Closes ticket 28839.
diff --git a/changes/ticket28840 b/changes/ticket28840
deleted file mode 100644
index 05d3fbb94c..0000000000
--- a/changes/ticket28840
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (testing):
- - Allow HeartbeatPeriod of less than 30 minutes in testing Tor networks.
- Closes ticket 28840, patch by robgjansen
diff --git a/changes/ticket28843 b/changes/ticket28843
deleted file mode 100644
index 00905293c4..0000000000
--- a/changes/ticket28843
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (controller):
- - Add a DROPOWNERSHIP command to undo the effects of TAKEOWNERSHIP.
- Implements ticket 28843.
diff --git a/changes/ticket28846 b/changes/ticket28846
deleted file mode 100644
index efb5b9938e..0000000000
--- a/changes/ticket28846
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (pluggable transports):
- - Add support for emitting STATUS updates to Tor's control port from a
- pluggable transport process. Closes ticket 28846.
diff --git a/changes/ticket28847 b/changes/ticket28847
deleted file mode 100644
index 63100c5813..0000000000
--- a/changes/ticket28847
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (process):
- - Use the subsystem module to initialize and shut down the process module.
- Closes ticket 28847.
diff --git a/changes/ticket28852 b/changes/ticket28852
deleted file mode 100644
index a58cc3ba0e..0000000000
--- a/changes/ticket28852
+++ /dev/null
@@ -1,4 +0,0 @@
- o Minor features (performance):
- - Remove a needless memset() call from get_token_arguments,
- thereby speeding up the tokenization of directory objects by about
- 20%. Closes ticket 28852.
diff --git a/changes/ticket28853 b/changes/ticket28853
deleted file mode 100644
index e76f6bd8c9..0000000000
--- a/changes/ticket28853
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (performance):
- - Replace parse_short_policy() with a faster implementation, to improve
- microdescriptor parsing time. Closes ticket 28853.
diff --git a/changes/ticket28856 b/changes/ticket28856
deleted file mode 100644
index b136470494..0000000000
--- a/changes/ticket28856
+++ /dev/null
@@ -1,3 +0,0 @@
- o Minor features (performance):
- - Speed up directory parsing a little by avoiding use of the
- non-inlined strcmp_len() function. Closes ticket 28856.
diff --git a/changes/ticket29062 b/changes/ticket29062
new file mode 100644
index 0000000000..de05c621f1
--- /dev/null
+++ b/changes/ticket29062
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring (shell scripts):
+ - Cleanup test_keygen.sh to silence all shellcheck warnings. Closes
+ ticket 29062.
diff --git a/changes/ticket29065 b/changes/ticket29065
new file mode 100644
index 0000000000..edf00ac99c
--- /dev/null
+++ b/changes/ticket29065
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring (shell scripts):
+ - Cleanup test_switch_id.sh to silence shellcheck warnings. Closes
+ ticket 29065.
diff --git a/changes/ticket29067 b/changes/ticket29067
new file mode 100644
index 0000000000..a660648775
--- /dev/null
+++ b/changes/ticket29067
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring (shell scripts):
+ - Fix test_workqueue_*.sh scripts to silence shellcheck SC2086
+ warnings. Fixes issue 29067.
diff --git a/changes/ticket29068 b/changes/ticket29068
new file mode 100644
index 0000000000..77ef304f1d
--- /dev/null
+++ b/changes/ticket29068
@@ -0,0 +1,2 @@
+ o Code simplification and refactoring (shell scripts):
+ - Fix shellcheck warnings in zero_length_keys.sh. Resolves issue 29068.
diff --git a/changes/ticket29070 b/changes/ticket29070
new file mode 100644
index 0000000000..2716915359
--- /dev/null
+++ b/changes/ticket29070
@@ -0,0 +1,2 @@
+ o Code simplification and refactoring (shell scripts):
+ - Fix shellcheck warning in torify script. Resolves issue 29070.
diff --git a/changes/ticket29071 b/changes/ticket29071
new file mode 100644
index 0000000000..0997a8d22f
--- /dev/null
+++ b/changes/ticket29071
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring (shell scripts):
+ - Fix shellcheck warnings in nagios-check-tor-authority-cert script.
+ Resolves issue 29071.
diff --git a/changes/ticket29435 b/changes/ticket29435
new file mode 100644
index 0000000000..d48ae98e4b
--- /dev/null
+++ b/changes/ticket29435
@@ -0,0 +1,3 @@
+ o Minor bugfixes (testing):
+ - Fix our gcov wrapper script to look for object files at the
+ correct locations. Fixes bug 29435; bugfix on 0.3.5.1-alpha.
diff --git a/changes/ticket29436 b/changes/ticket29436
new file mode 100644
index 0000000000..025be619e5
--- /dev/null
+++ b/changes/ticket29436
@@ -0,0 +1,4 @@
+ o Minor features (testing):
+ - We now have a script, cov-test-determinism.sh, to identify places
+ where our unit test coverage has become nondeterministic.
+ Closes ticket 29436.
diff --git a/changes/ticket29536 b/changes/ticket29536
new file mode 100644
index 0000000000..a5ae26b701
--- /dev/null
+++ b/changes/ticket29536
@@ -0,0 +1,9 @@
+ o Minor features (performance, RNG):
+ - Tor now constructs a fast secure pseudorandom number generator for
+ each thread, to use for cases where performance is critical. This PRNG
+ is based on AES-CTR, using a buffering construction similar to
+ libottery and the (newer) OpenBSD arc4random() code. It outperforms
+ OpenSSL 1.1.1a's CSPRNG by roughly a factor of 100 for small outputs.
+ Although we believe it to be cryptographically strong, we are only
+ using it when necessary for reasonable performance. Implements tickets
+ 29023 and 29536.
diff --git a/configure.ac b/configure.ac
index 76fc12be50..6036cdffe5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
dnl Copyright (c) 2001-2004, Roger Dingledine
dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
-dnl Copyright (c) 2007-2018, The Tor Project, Inc.
+dnl Copyright (c) 2007-2019, The Tor Project, Inc.
dnl See LICENSE for licensing information
AC_PREREQ([2.63])
-AC_INIT([tor],[0.4.0.0-alpha-dev])
+AC_INIT([tor],[0.4.1.0-alpha-dev])
AC_CONFIG_SRCDIR([src/app/main/tor_main.c])
AC_CONFIG_MACRO_DIR([m4])
@@ -14,7 +14,7 @@ AC_CONFIG_MACRO_DIR([m4])
# version number changes. Tor uses it to make sure that it
# only shuts down for missing "required protocols" when those protocols
# are listed as required by a consensus after this date.
-AC_DEFINE(APPROX_RELEASE_DATE, ["2019-01-15"], # for 0.4.0.0-alpha-dev
+AC_DEFINE(APPROX_RELEASE_DATE, ["2019-02-19"], # for 0.4.1.0-alpha-dev
[Approximate date when this software was released. (Updated when the version changes.)])
# "foreign" means we don't follow GNU package layout standards
@@ -605,8 +605,10 @@ AC_CHECK_FUNCS(
llround \
localtime_r \
lround \
+ madvise \
memmem \
memset_s \
+ minherit \
mmap \
pipe \
pipe2 \
@@ -1450,6 +1452,7 @@ AC_CHECK_HEADERS([errno.h \
inttypes.h \
limits.h \
linux/types.h \
+ mach/vm_inherit.h \
machine/limits.h \
malloc.h \
malloc/malloc.h \
diff --git a/contrib/client-tools/torify b/contrib/client-tools/torify
index 54acfed654..ac4c9b5c7f 100755
--- a/contrib/client-tools/torify
+++ b/contrib/client-tools/torify
@@ -53,7 +53,7 @@ pathfind() {
if pathfind torsocks; then
exec torsocks "$@"
- echo "$0: Failed to exec torsocks $@" >&2
+ echo "$0: Failed to exec torsocks $*" >&2
exit 1
else
echo "$0: torsocks not found in your PATH. Perhaps it isn't installed? (tsocks is no longer supported, for security reasons.)" >&2
diff --git a/contrib/dirauth-tools/nagios-check-tor-authority-cert b/contrib/dirauth-tools/nagios-check-tor-authority-cert
index 46dc7284b7..75ff479a53 100755
--- a/contrib/dirauth-tools/nagios-check-tor-authority-cert
+++ b/contrib/dirauth-tools/nagios-check-tor-authority-cert
@@ -49,12 +49,12 @@ DIRSERVERS="$DIRSERVERS 80.190.246.100:80" # gabelmoo
DIRSERVERS="$DIRSERVERS 194.109.206.212:80" # dizum
DIRSERVERS="$DIRSERVERS 213.73.91.31:80" # dannenberg
-TMPFILE="`tempfile`"
+TMPFILE=$(mktemp)
trap 'rm -f "$TMPFILE"' 0
for dirserver in $DIRSERVERS; do
- wget -q -O "$TMPFILE" "http://$dirserver/tor/keys/fp/$identity"
- if [ "$?" = 0 ]; then
+ if wget -q -O "$TMPFILE" "http://$dirserver/tor/keys/fp/$identity"
+ then
break
else
cat /dev/null > "$TMPFILE"
@@ -74,10 +74,10 @@ now=$(date +%s)
if [ "$now" -ge "$expiryunix" ]; then
echo "CRITICAL: Certificate expired $expirydate (authority $identity)."
exit 2
-elif [ "$(( $now + 7*24*60*60 ))" -ge "$expiryunix" ]; then
+elif [ "$(( now + 7*24*60*60 ))" -ge "$expiryunix" ]; then
echo "CRITICAL: Certificate expires $expirydate (authority $identity)."
exit 2
-elif [ "$(( $now + 30*24*60*60 ))" -ge "$expiryunix" ]; then
+elif [ "$(( now + 30*24*60*60 ))" -ge "$expiryunix" ]; then
echo "WARNING: Certificate expires $expirydate (authority $identity)."
exit 1
else
diff --git a/contrib/or-tools/check-tor b/contrib/or-tools/check-tor
deleted file mode 100755
index e981a35fcc..0000000000
--- a/contrib/or-tools/check-tor
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-## Originally written by Peter Palfrader.
-
-## This script lets you quickly check if a given router (by nickname)
-## will let you do a TLS handshake, or will let you download a directory.
-
-## Usage: check-tor nickname
-
-#set -x
-
-router="$1"
-dirserver="http://belegost.seul.org:80/tor/"
-
-lines=$( wget -q $dirserver --proxy=off -O - | grep -A5 '^router '"$router"' ' )
-line=$( echo "$lines" | head -n1 )
-
-if [ -z "$line" ]; then
- echo "Not found" >&2
- exit 1
-fi
-
-echo "$lines"
-echo
-
-ipor=$( echo "$line" | awk '{printf "%s:%s", $3, $4}' )
-
-op=$( echo "$line" | awk '{printf $6}' )
-ipop=$( echo "$line" | awk '{printf "%s:%s", $3, $6}' )
-
-echo
-echo ">>" openssl s_client -connect "$ipor"
-timeout 5 openssl s_client -connect "$ipor" < /dev/null
-if [ "$op" != "0" ]; then
- echo
- echo ">>" wget --proxy=off -O - http://$ipop/tor/
- timeout 5 wget --proxy=off -O - http://$ipop/tor/ | head -n3
-fi
-
-echo
-echo -n "$router "; echo "$lines" | grep 'fingerprint' | sed -e 's/^opt //' -e 's/^fingerprint //';
diff --git a/contrib/win32build/tor-mingw.nsi.in b/contrib/win32build/tor-mingw.nsi.in
index af01a2b499..419b5aa58c 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
!include "LogicLib.nsh"
!include "FileFunc.nsh"
!insertmacro GetParameters
-!define VERSION "0.4.0.0-alpha-dev"
+!define VERSION "0.4.1.0-alpha-dev"
!define INSTALLER "tor-${VERSION}-win32.exe"
!define WEBSITE "https://www.torproject.org/"
!define LICENSE "LICENSE"
diff --git a/doc/HACKING/Maintaining.md b/doc/HACKING/Maintaining.md
index 22d62b5471..4d5a7f6b76 100644
--- a/doc/HACKING/Maintaining.md
+++ b/doc/HACKING/Maintaining.md
@@ -4,7 +4,7 @@ This document details the duties and processes on maintaining the Tor code
base.
The first section describes who is the current Tor maintainer and what are the
-responsabilities. Tor has one main single maintainer but does have many
+responsibilities. Tor has one main single maintainer but does have many
committers and subsystem maintainers.
The second third section describes how the **alpha and master** branches are
@@ -21,14 +21,14 @@ This document does not cover how Tor is released, please see
The current maintainer is Nick Mathewson <nickm@torproject.org>.
The maintainer takes final decisions in terms of engineering, architecture and
-protocol design. Releasing Tor falls under their responsability.
+protocol design. Releasing Tor falls under their responsibility.
## Alpha and Master Branches
-The Tor repository always has at all time a **master** branch which contains
+The Tor repository always has at all times a **master** branch which contains
the upstream ongoing development.
-It may also contains a branch for a released feature freezed version which is
+It may also contain a branch for a released feature freezed version which is
called the **alpha** branch. The git tag and version number is always
postfixed with `-alpha[-dev]`. For example: `tor-0.3.5.0-alpha-dev` or
`tor-0.3.5.3-alpha`.
@@ -39,7 +39,7 @@ code base but only commit (in most cases) into the subsystem they maintain.
Upstream merges are restricted to the alpha and master branches. Subsystem
maintainers should never push a patch into a stable branch which is the
-responsability of the [stable branch maintainer](#stable-branches).
+responsibility of the [stable branch maintainer](#stable-branches).
### Who
@@ -68,7 +68,7 @@ maintain the following subsystems:
These are the tasks of a subsystem maintainer:
-1. Regurlarly go over `merge_ready` tickets relevant to the related subsystem
+1. Regularly go over `merge_ready` tickets relevant to the related subsystem
and for the current alpha or development (master branch) Milestone.
2. A subsystem maintainer is expected to contribute to any design changes
@@ -86,7 +86,7 @@ These are few important items to follow when merging code upstream:
**at least** one person that is not the original coder.
Example A: If Alice writes a patch then Bob, a Tor network team member,
- reviews it and flags it `merge_ready`. Then, the maintainter is required
+ reviews it and flags it `merge_ready`. Then, the maintainer is required
to look at the patch and makes a decision.
Example B: If the maintainer writes a patch then Bob, a Tor network
@@ -100,7 +100,7 @@ These are few important items to follow when merging code upstream:
3. Trivial patches such as comment change, documentation, syntax issues or
typos can be merged without a ticket or reviewers.
-4. Tor uses the "merge forward" method that is if a patch applies to the
+4. Tor uses the "merge forward" method, that is, if a patch applies to the
alpha branch, it has to be merged there first and then merged forward
into master.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index b058bebcb3..eb16037430 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -1021,6 +1021,26 @@ The following options are useful only for clients (that is, if
The .exit address notation, if enabled via MapAddress, overrides
this option.
+[[MiddleNodes]] **MiddleNodes** __node__,__node__,__...__::
+ A list of identity fingerprints and country codes of nodes
+ to use for "middle" hops in your normal circuits.
+ Normal circuits include all circuits except for direct connections
+ to directory servers. Middle hops are all hops other than exit and entry. +
++
+ This is an **experimental** feature that is meant to be used by researchers
+ and developers to test new features in the Tor network safely. Using it
+ without care will strongly influence your anonymity. This feature might get
+ removed in the future.
++
+ The HSLayer2Node and HSLayer3Node options override this option for onion
+ service circuits, if they are set. The vanguards addon will read this
+ option, and if set, it will set HSLayer2Nodes and HSLayer3Nodes to nodes
+ from this set.
++
+ The ExcludeNodes option overrides this option: any node listed in both
+ MiddleNodes and ExcludeNodes is treated as excluded. See
+ the **ExcludeNodes** option for more information on how to specify nodes.
+
[[EntryNodes]] **EntryNodes** __node__,__node__,__...__::
A list of identity fingerprints and country codes of nodes
to use for the first hop in your normal circuits.
@@ -1037,13 +1057,14 @@ The following options are useful only for clients (that is, if
If StrictNodes is set to 1, Tor will treat solely the ExcludeNodes option
as a requirement to follow for all the circuits you generate, even if
doing so will break functionality for you (StrictNodes applies to neither
- ExcludeExitNodes nor to ExitNodes). If StrictNodes is set to 0, Tor will
- still try to avoid nodes in the ExcludeNodes list, but it will err on the
- side of avoiding unexpected errors. Specifically, StrictNodes 0 tells Tor
- that it is okay to use an excluded node when it is *necessary* to perform
- relay reachability self-tests, connect to a hidden service, provide a
- hidden service to a client, fulfill a .exit request, upload directory
- information, or download directory information. (Default: 0)
+ ExcludeExitNodes nor to ExitNodes, nor to MiddleNodes). If StrictNodes
+ is set to 0, Tor will still try to avoid nodes in the ExcludeNodes list,
+ but it will err on the side of avoiding unexpected errors.
+ Specifically, StrictNodes 0 tells Tor that it is okay to use an excluded
+ node when it is *necessary* to perform relay reachability self-tests,
+ connect to a hidden service, provide a hidden service to a client,
+ fulfill a .exit request, upload directory information, or download
+ directory information. (Default: 0)
[[FascistFirewall]] **FascistFirewall** **0**|**1**::
If 1, Tor will only create outgoing connections to ORs running on ports
@@ -1138,17 +1159,18 @@ The following options are useful only for clients (that is, if
1. When evaluating MapAddress expressions Tor stops when it hits the most
recently added expression that matches the requested address. So if you
- have the following in your torrc, www.torproject.org will map to 1.1.1.1:
+ have the following in your torrc, www.torproject.org will map to
+ 198.51.100.1:
- MapAddress www.torproject.org 2.2.2.2
- MapAddress www.torproject.org 1.1.1.1
+ MapAddress www.torproject.org 192.0.2.1
+ MapAddress www.torproject.org 198.51.100.1
2. Tor evaluates the MapAddress configuration until it finds no matches. So
if you have the following in your torrc, www.torproject.org will map to
- 2.2.2.2:
+ 203.0.113.1:
- MapAddress 1.1.1.1 2.2.2.2
- MapAddress www.torproject.org 1.1.1.1
+ MapAddress 198.51.100.1 203.0.113.1
+ MapAddress www.torproject.org 198.51.100.1
3. The following MapAddress expression is invalid (and will be
ignored) because you cannot map from a specific address to a wildcard
@@ -2991,8 +3013,8 @@ file name is irrelevant) and its content format MUST be:
<auth-type>:<key-type>:<base32-encoded-public-key>
The supported <auth-type> are: "descriptor". The supported <key-type> are:
-"x25519". The <base32-encoded-privkey> is the base32 representation of the raw
-key bytes only (32 bytes for x25519).
+"x25519". The <base32-encoded-public-key> is the base32 representation of
+the raw key bytes only (32 bytes for x25519).
Each file MUST contain one line only. Any malformed file will be
ignored. Client authorization will only be enabled for the service if tor
diff --git a/scripts/codegen/gen_server_ciphers.py b/scripts/codegen/gen_server_ciphers.py
index 5b2eef07ef..5d326f8b9e 100755
--- a/scripts/codegen/gen_server_ciphers.py
+++ b/scripts/codegen/gen_server_ciphers.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2018, The Tor Project, Inc
+# Copyright 2014-2019, The Tor Project, Inc
# See LICENSE for licensing information
# This script parses openssl headers to find ciphersuite names, determines
diff --git a/scripts/codegen/get_mozilla_ciphers.py b/scripts/codegen/get_mozilla_ciphers.py
index 4f986daba9..f23f2f1e6f 100755
--- a/scripts/codegen/get_mozilla_ciphers.py
+++ b/scripts/codegen/get_mozilla_ciphers.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
# coding=utf-8
-# Copyright 2011-2018, The Tor Project, Inc
+# Copyright 2011-2019, The Tor Project, Inc
# original version by Arturo Filastò
# See LICENSE for licensing information
diff --git a/scripts/codegen/makedesc.py b/scripts/codegen/makedesc.py
index 4ee8106f03..efca4dda9a 100644
--- a/scripts/codegen/makedesc.py
+++ b/scripts/codegen/makedesc.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2018, The Tor Project, Inc.
+# Copyright 2014-2019, The Tor Project, Inc.
# See LICENSE for license information
# This is a kludgey python script that uses ctypes and openssl to sign
diff --git a/scripts/maint/annotate_ifdef_directives b/scripts/maint/annotate_ifdef_directives
index 368d842e2e..ca267a865e 100755
--- a/scripts/maint/annotate_ifdef_directives
+++ b/scripts/maint/annotate_ifdef_directives
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright (c) 2017, The Tor Project, Inc.
+# Copyright (c) 2017-2019, The Tor Project, Inc.
# See LICENSE for licensing information
import re
diff --git a/scripts/maint/fallback.whitelist b/scripts/maint/fallback.whitelist
deleted file mode 100644
index 60d3e7bb85..0000000000
--- a/scripts/maint/fallback.whitelist
+++ /dev/null
@@ -1,1064 +0,0 @@
-# updateFallbackDirs.py directory mirror whitelist
-#
-# At least one of these keys must match for a directory mirror to be included
-# in the fallback list:
-# id
-# ipv4
-# ipv6
-# The ports and nickname are ignored. Missing or extra ipv6 addresses
-# are ignored.
-#
-# The latest relay details from Onionoo are included in the generated list.
-#
-# To check the hard-coded fallback list (for testing), use:
-# $ updateFallbackDirs.py check_existing
-#
-# If a relay operator wants their relay to be a FallbackDir,
-# enter the following information here:
-# <IPv4>:<DirPort> orport=<ORPort> id=<ID> ( ipv6=[<IPv6>]:<IPv6 ORPort> )?
-# or use:
-# scripts/maint/generateFallbackDirLine.py fingerprint ...
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008362.html
-# https://trac.torproject.org/projects/tor/ticket/22321#comment:22
-78.47.18.110:443 orport=80 id=F8D27B163B9247B232A2EEE68DD8B698695C28DE ipv6=[2a01:4f8:120:4023::110]:80 # fluxe3
-131.188.40.188:1443 orport=80 id=EBE718E1A49EE229071702964F8DB1F318075FF8 ipv6=[2001:638:a000:4140::ffff:188]:80 # fluxe4
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008366.html
-5.39.88.19:9030 orport=9001 id=7CB8C31432A796731EA7B6BF4025548DFEB25E0C ipv6=[2001:41d0:8:9a13::1]:9050
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008370.html
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008517.html
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008555.html
-212.47.237.95:9030 orport=9001 id=3F5D8A879C58961BB45A3D26AC41B543B40236D6
-212.47.237.95:9130 orport=9101 id=6FB38EB22E57EF7ED5EF00238F6A48E553735D88
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008372.html
-# IPv6 tunnel available on request (is this a good idea?)
-108.53.208.157:80 orport=443 id=4F0DB7E687FC7C0AE55C8F243DA8B0EB27FBF1F2
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008373.html
-167.114.35.28:9030 orport=9001 id=E65D300F11E1DB12C534B0146BDAB6972F1A8A48
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008378.html
-144.76.14.145:110 orport=143 id=14419131033443AE6E21DA82B0D307F7CAE42BDB ipv6=[2a01:4f8:190:9490::dead]:443
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008379.html
-# Email sent directly to teor, verified using relay contact info
-91.121.84.137:4951 orport=4051 id=6DE61A6F72C1E5418A66BFED80DFB63E4C77668F
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008381.html
-# Sent additional emails to teor with updated relays
-81.7.11.96:9030 orport=9001 id=8FA37B93397015B2BC5A525C908485260BE9F422 # Doedel22
-# 9F5068310818ED7C70B0BC4087AB55CB12CB4377 not found in current consensus
-178.254.19.101:80 orport=443 id=F9246DEF2B653807236DA134F2AEAB103D58ABFE # Freebird31
-178.254.19.101:9030 orport=9001 id=0C475BA4D3AA3C289B716F95954CAD616E50C4E5 # Freebird32
-81.7.14.253:9001 orport=443 id=1AE039EE0B11DB79E4B4B29CBA9F752864A0259E # Ichotolot60
-81.7.11.186:1080 orport=443 id=B86137AE9681701901C6720E55C16805B46BD8E3 # BeastieJoy60
-85.25.213.211:465 orport=80 id=CE47F0356D86CF0A1A2008D97623216D560FB0A8 # BeastieJoy61
-85.25.159.65:995 orport=80 id=52BFADA8BEAA01BA46C8F767F83C18E2FE50C1B9 # BeastieJoy63
-81.7.3.67:993 orport=443 id=A2E6BB5C391CD46B38C55B4329C35304540771F1 # BeastieJoy62
-81.7.14.31:9001 orport=443 id=7600680249A22080ECC6173FBBF64D6FCF330A61 # Ichotolot62
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008382.html
-51.255.33.237:9091 orport=9001 id=A360C21FA87FFA2046D92C17086A6B47E5C68109
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008383.html
-81.7.14.246:80 orport=443 id=CE75BF0972ADD52AF8807602374E495C815DB304 ipv6=[2a02:180:a:51::dead]:443
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008384.html
-# Sent additional email to teor with fingerprint change
-149.202.98.161:80 orport=443 id=FC64CD763F8C1A319BFBBF62551684F4E1E42332 ipv6=[2001:41d0:8:4528::161]:443
-193.111.136.162:80 orport=443 id=C79552275DFCD486B942510EF663ED36ACA1A84B ipv6=[2001:4ba0:cafe:10d0::1]:443
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008416.html
-185.100.84.212:80 orport=443 id=330CD3DB6AD266DC70CDB512B036957D03D9BC59 ipv6=[2a06:1700:0:7::1]:443
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008417.html
-178.16.208.56:80 orport=443 id=2CDCFED0142B28B002E89D305CBA2E26063FADE2 ipv6=[2a00:1c20:4089:1234:cd49:b58a:9ebe:67ec]:443
-178.16.208.57:80 orport=443 id=92CFD9565B24646CAC2D172D3DB503D69E777B8A ipv6=[2a00:1c20:4089:1234:7825:2c5d:1ecd:c66f]:443
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008513.html
-178.62.173.203:9030 orport=9001 id=DD85503F2D1F52EF9EAD621E942298F46CD2FC10 ipv6=[2a03:b0c0:0:1010::a4:b001]:9001
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008534.html
-5.9.110.236:9030 orport=9001 id=0756B7CD4DFC8182BE23143FAC0642F515182CEB ipv6=[2a01:4f8:162:51e2::2]:9001
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008542.html
-178.62.199.226:80 orport=443 id=CBEFF7BA4A4062045133C053F2D70524D8BBE5BE ipv6=[2a03:b0c0:2:d0::b7:5001]:443
-
-# Email sent directly to teor, verified using relay contact info
-94.23.204.175:9030 orport=9001 id=5665A3904C89E22E971305EE8C1997BCA4123C69
-
-# Email sent directly to teor, verified using relay contact info
-171.25.193.77:80 orport=443 id=A10C4F666D27364036B562823E5830BC448E046A ipv6=[2001:67c:289c:3::77]:443
-171.25.193.78:80 orport=443 id=A478E421F83194C114F41E94F95999672AED51FE ipv6=[2001:67c:289c:3::78]:443
-171.25.193.20:80 orport=443 id=DD8BD7307017407FCC36F8D04A688F74A0774C02 ipv6=[2001:67c:289c::20]:443
-# same machine as DD8BD7307017407FCC36F8D04A688F74A0774C02
-171.25.193.25:80 orport=443 id=185663B7C12777F052B2C2D23D7A239D8DA88A0F ipv6=[2001:67c:289c::25]:443
-
-# Email sent directly to teor, verified using relay contact info
-212.47.229.2:9030 orport=9001 id=20462CBA5DA4C2D963567D17D0B7249718114A68 ipv6=[2001:bc8:4400:2100::f03]:9001
-93.115.97.242:9030 orport=9001 id=B5212DB685A2A0FCFBAE425738E478D12361710D
-46.28.109.231:9030 orport=9001 id=F70B7C5CD72D74C7F9F2DC84FA9D20D51BA13610 ipv6=[2a02:2b88:2:1::4205:1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-85.235.250.88:80 orport=443 id=72B2B12A3F60408BDBC98C6DF53988D3A0B3F0EE # TykRelay01
-185.96.88.29:80 orport=443 id=86C281AD135058238D7A337D546C902BE8505DDE # TykRelay051
-# This fallback opted-in in previous releases, then changed its details,
-# and so we blacklisted it. Now we want to whitelist changes.
-# Assume details update is permanent
-185.96.180.29:80 orport=443 id=F93D8F37E35C390BCAD9F9069E13085B745EC216 # TykRelay06
-
-# Email sent directly to teor, verified using relay contact info
-185.11.180.67:80 orport=9001 id=794D8EA8343A4E820320265D05D4FA83AB6D1778
-
-# Email sent directly to teor, verified using relay contact info
-178.16.208.62:80 orport=443 id=5CF8AFA5E4B0BB88942A44A3F3AAE08C3BDFD60B ipv6=[2a00:1c20:4089:1234:a6a4:2926:d0af:dfee]:443
-46.165.221.166:80 orport=443 id=EE5F897C752D46BCFF531641B853FC6BC78DD4A7
-178.16.208.60:80 orport=443 id=B44FBE5366AD98B46D829754FA4AC599BAE41A6A ipv6=[2a00:1c20:4089:1234:67bc:79f3:61c0:6e49]:443
-178.16.208.55:80 orport=443 id=C4AEA05CF380BAD2230F193E083B8869B4A29937 ipv6=[2a00:1c20:4089:1234:7b2c:11c5:5221:903e]:443
-178.16.208.61:80 orport=443 id=3B52392E2256C35CDCF7801FF898FC88CE6D431A ipv6=[2a00:1c20:4089:1234:2712:a3d0:666b:88a6]:443
-81.89.96.88:80 orport=443 id=55ED4BB49F6D3F36D8D9499BE43500E017A5EF82 ipv6=[2a02:180:1:1:14c5:b0b7:2d7d:5f3a]:443
-209.222.8.196:80 orport=443 id=C86D2F3DEFE287A0EEB28D4887AF14E35C172733 ipv6=[2001:19f0:1620:41c1:426c:5adf:2ed5:4e88]:443
-81.89.96.89:80 orport=443 id=28651F419F5A1CF74511BB500C58112192DD4943 ipv6=[2a02:180:1:1:2ced:24e:32ea:a03b]:443
-46.165.221.166:9030 orport=9001 id=8C7106C880FE8AA1319DD71B59623FCB8914C9F1
-178.16.208.62:80 orport=443 id=5CF8AFA5E4B0BB88942A44A3F3AAE08C3BDFD60B ipv6=[2a00:1c20:4089:1234:a6a4:2926:d0af:dfee]:443"
-46.165.221.166:80 orport=443 id=EE5F897C752D46BCFF531641B853FC6BC78DD4A7
-178.16.208.60:80 orport=443 id=B44FBE5366AD98B46D829754FA4AC599BAE41A6A ipv6=[2a00:1c20:4089:1234:67bc:79f3:61c0:6e49]:443
-178.16.208.55:80 orport=443 id=C4AEA05CF380BAD2230F193E083B8869B4A29937 ipv6=[2a00:1c20:4089:1234:7b2c:11c5:5221:903e]:443
-178.16.208.61:80 orport=443 id=3B52392E2256C35CDCF7801FF898FC88CE6D431A ipv6=[2a00:1c20:4089:1234:2712:a3d0:666b:88a6]:443
-81.89.96.88:80 orport=443 id=55ED4BB49F6D3F36D8D9499BE43500E017A5EF82 ipv6=[2a02:180:1:1:14c5:b0b7:2d7d:5f3a]:443
-209.222.8.196:80 orport=443 id=C86D2F3DEFE287A0EEB28D4887AF14E35C172733 ipv6=[2001:19f0:1620:41c1:426c:5adf:2ed5:4e88]:443
-81.89.96.89:80 orport=443 id=28651F419F5A1CF74511BB500C58112192DD4943 ipv6=[2a02:180:1:1:2ced:24e:32ea:a03b]:443
-46.165.221.166:9030 orport=9001 id=8C7106C880FE8AA1319DD71B59623FCB8914C9F1
-178.16.208.56:80 orport=443 id=2CDCFED0142B28B002E89D305CBA2E26063FADE2 ipv6=[2a00:1c20:4089:1234:cd49:b58a:9ebe:67ec]:443
-178.16.208.58:80 orport=443 id=A4C98CEA3F34E05299417E9F885A642C88EF6029 ipv6=[2a00:1c20:4089:1234:cdae:1b3e:cc38:3d45]:443
-178.16.208.57:80 orport=443 id=92CFD9565B24646CAC2D172D3DB503D69E777B8A ipv6=[2a00:1c20:4089:1234:7825:2c5d:1ecd:c66f]:443
-178.16.208.59:80 orport=443 id=136F9299A5009A4E0E96494E723BDB556FB0A26B ipv6=[2a00:1c20:4089:1234:bff6:e1bb:1ce3:8dc6]:443
-
-# Email sent directly to teor, verified using relay contact info
-5.39.76.158:80 orport=443 id=C41F60F8B00E7FEF5CCC5BC6BB514CA1B8AAB651
-
-# Email sent directly to teor, verified using relay contact info
-109.163.234.2:80 orport=443 id=14F92FF956105932E9DEC5B82A7778A0B1BD9A52
-109.163.234.4:80 orport=443 id=4888770464F0E900EFEF1BA181EA873D13F7713C
-109.163.234.5:80 orport=443 id=5EB8D862E70981B8690DEDEF546789E26AB2BD24
-109.163.234.7:80 orport=443 id=23038A7F2845EBA2234ECD6651BD4A7762F51B18
-109.163.234.8:80 orport=443 id=0818DAE0E2DDF795AEDEAC60B15E71901084F281
-109.163.234.9:80 orport=443 id=ABF7FBF389C9A747938B639B20E80620B460B2A9
-62.102.148.67:80 orport=443 id=4A0C3E177AF684581EF780981AEAF51A98A6B5CF
-# Assume details update is permanent
-77.247.181.166:80 orport=443 id=77131D7E2EC1CA9B8D737502256DA9103599CE51 # CriticalMass
-77.247.181.164:80 orport=443 id=204DFD2A2C6A0DC1FA0EACB495218E0B661704FD # HaveHeart
-77.247.181.162:80 orport=443 id=7BFB908A3AA5B491DA4CA72CCBEE0E1F2A939B55 # sofia
-
-# https://twitter.com/biotimylated/status/718994247500718080
-212.47.252.149:9030 orport=9001 id=2CAC39BAA996791CEFAADC9D4754D65AF5EB77C0
-
-# Email sent directly to teor, verified using relay contact info
-46.165.230.5:80 orport=443 id=A0F06C2FADF88D3A39AA3072B406F09D7095AC9E
-
-# Email sent directly to teor, verified using relay contact info
-94.242.246.24:23 orport=8080 id=EC116BCB80565A408CE67F8EC3FE3B0B02C3A065 ipv6=[2a01:608:ffff:ff07::1:24]:9004
-94.242.246.23:443 orport=9001 id=F65E0196C94DFFF48AFBF2F5F9E3E19AAE583FD0 ipv6=[2a01:608:ffff:ff07::1:23]:9003
-85.248.227.164:444 orport=9002 id=B84F248233FEA90CAD439F292556A3139F6E1B82 ipv6=[2a00:1298:8011:212::164]:9004
-85.248.227.163:443 orport=9001 id=C793AB88565DDD3C9E4C6F15CCB9D8C7EF964CE9 ipv6=[2a00:1298:8011:212::163]:9003
-
-# Email sent directly to teor, verified using relay contact info
-148.251.190.229:9030 orport=9010 id=BF0FB582E37F738CD33C3651125F2772705BB8E8 ipv6=[2a01:4f8:211:c68::2]:9010
-
-# Email sent directly to teor, verified using relay contact info
-5.79.68.161:81 orport=443 id=9030DCF419F6E2FBF84F63CBACBA0097B06F557E ipv6=[2001:1af8:4700:a012:1::1]:443
-5.79.68.161:9030 orport=9001 id=B7EC0C02D7D9F1E31B0C251A6B058880778A0CD1 ipv6=[2001:1af8:4700:a012:1::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-62.210.92.11:9030 orport=9001 id=0266B0660F3F20A7D1F3D8335931C95EF50F6C6B ipv6=[2001:bc8:338c::1]:9001
-62.210.92.11:9130 orport=9101 id=387B065A38E4DAA16D9D41C2964ECBC4B31D30FF ipv6=[2001:bc8:338c::1]:9101
-
-# Email sent directly to teor, verified using relay contact info
-188.165.194.195:9030 orport=9001 id=49E7AD01BB96F6FE3AB8C3B15BD2470B150354DF
-
-# Message sent directly to teor, verified using relay contact info
-95.215.44.110:80 orport=443 id=D56AA4A1AA71961F5279FB70A6DCF7AD7B993EB5
-95.215.44.122:80 orport=443 id=998D8FE06B867AA3F8D257A7D28FFF16964D53E2
-95.215.44.111:80 orport=443 id=A7C7FD510B20BC8BE8F2A1D911364E1A23FBD09F
-
-# Email sent directly to teor, verified using relay contact info
-86.59.119.88:80 orport=443 id=ACD889D86E02EDDAB1AFD81F598C0936238DC6D0
-86.59.119.83:80 orport=443 id=FC9AC8EA0160D88BCCFDE066940D7DD9FA45495B
-
-# Email sent directly to teor, verified using relay contact info
-193.11.164.243:9030 orport=9001 id=FFA72BD683BC2FCF988356E6BEC1E490F313FB07 ipv6=[2001:6b0:7:125::243]:9001
-109.105.109.162:52860 orport=60784 id=32EE911D968BE3E016ECA572BB1ED0A9EE43FC2F ipv6=[2001:948:7:2::163]:5001
-
-# Email sent directly to teor, verified using relay contact info
-146.0.32.144:9030 orport=9001 id=35E8B344F661F4F2E68B17648F35798B44672D7E
-
-# Email sent directly to teor, verified using relay contact info
-46.252.26.2:45212 orport=49991 id=E589316576A399C511A9781A73DA4545640B479D
-
-# Email sent directly to teor, verified using relay contact info
-89.187.142.208:80 orport=443 id=64186650FFE4469EBBE52B644AE543864D32F43C
-
-# Email sent directly to teor
-# Assume details update is permanent
-212.51.134.123:9030 orport=9001 id=50586E25BE067FD1F739998550EDDCB1A14CA5B2 # Jans
-
-# Email sent directly to teor, verified using relay contact info
-46.101.143.173:80 orport=443 id=F960DF50F0FD4075AC9B505C1D4FFC8384C490FB
-
-# Email sent directly to teor, verified using relay contact info
-193.171.202.146:9030 orport=9001 id=01A9258A46E97FF8B2CAC7910577862C14F2C524
-
-# Email sent directly to teor, verified using relay contact info
-# Assume details update is permanent
-197.231.221.211:9030 orport=443 id=BC630CBBB518BE7E9F4E09712AB0269E9DC7D626 # IPredator
-
-# Email sent directly to teor, verified using relay contact info
-185.61.138.18:8080 orport=4443 id=2541759BEC04D37811C2209A88E863320271EC9C
-
-# Email sent directly to teor, verified using relay contact info
-193.11.114.45:9031 orport=9002 id=80AAF8D5956A43C197104CEF2550CD42D165C6FB
-193.11.114.43:9030 orport=9001 id=12AD30E5D25AA67F519780E2111E611A455FDC89 ipv6=[2001:6b0:30:1000::99]:9050
-193.11.114.46:9032 orport=9003 id=B83DC1558F0D34353BB992EF93AFEAFDB226A73E
-
-# Email sent directly to teor, verified using relay contact info
-138.201.250.33:9012 orport=9011 id=2BA2C8E96B2590E1072AECE2BDB5C48921BF8510
-
-# Email sent directly to teor, verified using relay contact info
-37.221.162.226:9030 orport=9001 id=D64366987CB39F61AD21DBCF8142FA0577B92811
-
-# Email sent directly to teor, verified using relay contact info
-91.219.237.244:80 orport=443 id=92ECC9E0E2AF81BB954719B189AC362E254AD4A5
-
-# Email sent directly to teor, verified using relay contact info
-185.21.100.50:9030 orport=9001 id=58ED9C9C35E433EE58764D62892B4FFD518A3CD0 ipv6=[2a00:1158:2:cd00:0:74:6f:72]:443
-
-# Email sent directly to teor, verified using relay contact info
-193.35.52.53:9030 orport=9001 id=DAA39FC00B196B353C2A271459C305C429AF09E4
-
-# Email sent directly to teor, verified using relay contact info
-134.119.3.164:9030 orport=9001 id=D1B8AAA98C65F3DF7D8BB3AF881CAEB84A33D8EE
-
-# Email sent directly to teor, verified using relay contact info
-173.212.254.192:31336 orport=31337 id=99E246DB480B313A3012BC3363093CC26CD209C7
-
-# Email sent directly to teor, verified using relay contact info
-178.62.22.36:80 orport=443 id=A0766C0D3A667A3232C7D569DE94A28F9922FCB1 ipv6=[2a03:b0c0:1:d0::174:1]:9050
-188.166.23.127:80 orport=443 id=8672E8A01B4D3FA4C0BBE21C740D4506302EA487 ipv6=[2a03:b0c0:2:d0::27b:7001]:9050
-198.199.64.217:80 orport=443 id=B1D81825CFD7209BD1B4520B040EF5653C204A23 ipv6=[2604:a880:400:d0::1a9:b001]:9050
-159.203.32.149:80 orport=443 id=55C7554AFCEC1062DCBAC93E67B2E03C6F330EFC ipv6=[2604:a880:cad:d0::105:f001]:9050
-
-# Email sent directly to teor, verified using relay contact info
-5.196.31.80:9030 orport=9900 id=DFB2EB472643FAFCD5E73D2E37D51DB67203A695 ipv6=[2001:41d0:52:400::a65]:9900
-
-# Email sent directly to teor, verified using relay contact info
-188.138.112.60:1433 orport=1521 id=C414F28FD2BEC1553024299B31D4E726BEB8E788
-
-# Email sent directly to teor, verified using relay contact info
-213.61.66.118:9031 orport=9001 id=30648BC64CEDB3020F4A405E4AB2A6347FB8FA22
-213.61.66.117:9032 orport=9002 id=6E44A52E3D1FF7683FE5C399C3FB5E912DE1C6B4
-213.61.66.115:9034 orport=9004 id=480CCC94CEA04D2DEABC0D7373868E245D4C2AE2
-213.61.66.116:9033 orport=9003 id=A9DEB920B42B4EC1DE6249034039B06D61F38690
-
-# Email sent directly to teor, verified using relay contact info
-136.243.187.165:9030 orport=443 id=1AC65257D7BFDE7341046625470809693A8ED83E
-
-# Email sent directly to teor, verified using relay contact info
-212.47.230.49:9030 orport=9001 id=3D6D0771E54056AEFC28BB1DE816951F11826E97
-
-# Email sent directly to teor, verified using relay contact info
-192.99.55.69:80 orport=443 id=0682DE15222A4A4A0D67DBA72A8132161992C023
-192.99.59.140:80 orport=443 id=3C9148DA49F20654730FAC83FFF693A4D49D0244
-51.254.215.13:80 orport=443 id=73C30C8ABDD6D9346C822966DE73B9F82CB6178A
-51.254.215.129:80 orport=443 id=7B4491D05144B20AE8519AE784B94F0525A8BB79
-192.99.59.139:80 orport=443 id=82EC878ADA7C205146B9F5193A7310867FAA0D7B
-51.254.215.124:80 orport=443 id=98999EBE89B5FA9AA0C58421F0B46C3D0AF51CBA
-51.254.214.208:80 orport=443 id=C3F0D1417848EAFC41277A73DEB4A9F2AEC23DDF
-192.99.59.141:80 orport=443 id=F45426551795B9DA78BEDB05CD5F2EACED8132E4
-192.99.59.14:80 orport=443 id=161A1B29A37EBF096D2F8A9B1E176D6487FE42AE
-
-# Email sent directly to teor, verified using relay contact info
-151.80.42.103:9030 orport=9001 id=9007C1D8E4F03D506A4A011B907A9E8D04E3C605 ipv6=[2001:41d0:e:f67::114]:9001
-
-# Email sent directly to teor, verified using relay contact info
-176.31.159.231:80 orport=443 id=D5DBCC0B4F029F80C7B8D33F20CF7D97F0423BB1
-176.31.159.230:80 orport=443 id=631748AFB41104D77ADBB7E5CD4F8E8AE876E683
-195.154.79.128:80 orport=443 id=C697612CA5AED06B8D829FCC6065B9287212CB2F
-195.154.9.161:80 orport=443 id=B6295A9960F89BD0C743EEBC5670450EA6A34685
-46.148.18.74:8080 orport=443 id=6CACF0B5F03C779672F3C5C295F37C8D234CA3F7
-
-# Email sent directly to teor, verified using relay contact info
-37.187.102.108:80 orport=443 id=F4263275CF54A6836EE7BD527B1328836A6F06E1 ipv6=[2001:41d0:a:266c::1]:443 # EvilMoe
-212.47.241.21:80 orport=443 id=892F941915F6A0C6E0958E52E0A9685C190CF45C # EvilMoe
-
-# Email sent directly to teor, verified using relay contact info
-212.129.38.254:9030 orport=9001 id=FDF845FC159C0020E2BDDA120C30C5C5038F74B4
-
-# Email sent directly to teor
-37.157.195.87:8030 orport=443 id=12FD624EE73CEF37137C90D38B2406A66F68FAA2 # thanatosCZ
-5.189.169.190:8030 orport=8080 id=8D79F73DCD91FC4F5017422FAC70074D6DB8DD81 # thanatosDE
-
-# Email sent directly to teor, verified using relay contact info
-37.187.7.74:80 orport=443 id=AEA43CB1E47BE5F8051711B2BF01683DB1568E05 ipv6=[2001:41d0:a:74a::1]:443
-
-# Email sent directly to teor, verified using relay contact info
-185.66.250.141:9030 orport=9001 id=B1726B94885CE3AC3910CA8B60622B97B98E2529
-
-# Email sent directly to teor, verified using relay contact info
-# Email sent directly to Phoul
-185.104.120.7:9030 orport=443 id=445F1C853966624FB3CF1E12442570DC553CC2EC ipv6=[2a06:3000::120:7]:443
-185.104.120.2:9030 orport=21 id=518FF8708698E1DA09C823C36D35DF89A2CAD956 ipv6=[2a06:3000::120:2]:443
-185.104.120.4:9030 orport=9001 id=F92B3CB9BBE0CB22409843FB1AE4DBCD5EFAC835 ipv6=[2a06:3000::120:4]:443
-185.104.120.3:9030 orport=21 id=707C1B61AC72227B34487B56D04BAA3BA1179CE8 ipv6=[2a06:3000::120:3]:443
-185.104.120.5:80 orport=443 id=3EBDF84DE3B16F0EBF7D51450F07913A02EFDA6C ipv6=[2a06:3000::120:5]:443
-185.104.120.60:80 orport=443 id=D05C9C7068EB5A45F670D5E38A14907EE6223141 ipv6=[2a06:3000::120:60]:443
-
-
-# Email sent directly to teor, verified using relay contact info
-37.187.102.186:9030 orport=9001 id=489D94333DF66D57FFE34D9D59CC2D97E2CB0053 ipv6=[2001:41d0:a:26ba::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-198.96.155.3:8080 orport=5001 id=BCEDF6C193AA687AE471B8A22EBF6BC57C2D285E
-
-# Email sent directly to teor, verified using relay contact info
-212.83.154.33:8888 orport=443 id=3C79699D4FBC37DE1A212D5033B56DAE079AC0EF
-212.83.154.33:8080 orport=8443 id=322C6E3A973BC10FC36DE3037AD27BC89F14723B
-
-# Email sent directly to teor, verified using relay contact info
-51.255.41.65:9030 orport=9001 id=9231DF741915AA1630031A93026D88726877E93A
-
-# Email sent directly to teor, verified using relay contact info
-78.142.142.246:80 orport=443 id=5A5E03355C1908EBF424CAF1F3ED70782C0D2F74
-
-# Email sent directly to teor, verified using relay contact info
-195.154.97.91:80 orport=443 id=BD33C50D50DCA2A46AAED54CA319A1EFEBF5D714
-
-# Email sent directly to teor, verified using relay contact info
-62.210.129.246:80 orport=443 id=79E169B25E4C7CE99584F6ED06F379478F23E2B8
-
-# Email sent directly to teor, verified using relay contact info
-5.196.74.215:9030 orport=9001 id=5818055DFBAF0FA7F67E8125FD63E3E7F88E28F6
-
-# Email sent directly to teor, verified using relay contact info
-212.47.233.86:9030 orport=9001 id=B4CAFD9CBFB34EC5DAAC146920DC7DFAFE91EA20
-
-# Email sent directly to teor, verified using relay contact info
-85.214.206.219:9030 orport=9001 id=98F8D5F359949E41DE8DF3DBB1975A86E96A84A0
-
-# Email sent directly to teor, verified using relay contact info
-46.166.170.4:80 orport=443 id=19F42DB047B72C7507F939F5AEA5CD1FA4656205
-46.166.170.5:80 orport=443 id=DA705AD4591E7B4708FA2CAC3D53E81962F3E6F6
-
-# Email sent directly to teor, verified using relay contact info
-5.189.157.56:80 orport=443 id=77F6D6A6B6EAFB8F5DADDC07A918BBF378ED6725
-
-# Email sent directly to teor, verified using relay contact info
-46.28.110.244:80 orport=443 id=9F7D6E6420183C2B76D3CE99624EBC98A21A967E
-185.13.39.197:80 orport=443 id=001524DD403D729F08F7E5D77813EF12756CFA8D
-95.130.12.119:80 orport=443 id=587E0A9552E4274B251F29B5B2673D38442EE4BF
-
-# Email sent directly to teor, verified using relay contact info
-212.129.62.232:80 orport=443 id=B143D439B72D239A419F8DCE07B8A8EB1B486FA7
-
-# Email sent directly to teor, verified using relay contact info
-91.219.237.229:80 orport=443 id=1ECD73B936CB6E6B3CD647CC204F108D9DF2C9F7
-
-# Email sent directly to teor, verified using relay contact info
-178.62.197.82:80 orport=443 id=0D3EBA17E1C78F1E9900BABDB23861D46FCAF163
-
-# Email sent directly to teor, verified using relay contact info
-82.223.21.74:9030 orport=9001 id=7A32C9519D80CA458FC8B034A28F5F6815649A98 ipv6=[2001:470:53e0::cafe]:9050
-
-# Email sent directly to teor, verified using relay contact info
-146.185.177.103:80 orport=9030 id=9EC5E097663862DF861A18C32B37C5F82284B27D
-
-# Email sent directly to teor, verified using relay contact info
-37.187.22.87:9030 orport=9001 id=36B9E7AC1E36B62A9D6F330ABEB6012BA7F0D400 ipv6=[2001:41d0:a:1657::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-37.59.46.159:9030 orport=9001 id=CBD0D1BD110EC52963082D839AC6A89D0AE243E7
-
-# Email sent directly to teor, verified using relay contact info
-212.47.250.243:9030 orport=9001 id=5B33EDBAEA92F446768B3753549F3B813836D477
-# Confirm with operator before adding these
-#163.172.133.36:9030 orport=9001 id=D8C2BD36F01FA86F4401848A0928C4CB7E5FDFF9
-#158.69.216.70:9030 orport=9001 id=0ACE25A978D4422C742D6BC6345896719BF6A7EB
-
-# Email sent directly to teor, verified using relay contact info
-5.199.142.236:9030 orport=9001 id=F4C0EDAA0BF0F7EC138746F8FEF1CE26C7860265
-
-# Email sent directly to teor, verified using relay contact info
-46.8.249.10:80 orport=443 id=31670150090A7C3513CB7914B9610E786391A95D
-
-# Email sent directly to teor, verified using relay contact info
-144.76.163.93:9030 orport=9001 id=22F08CF09764C4E8982640D77F71ED72FF26A9AC
-
-# Email sent directly to teor, verified using relay contact info
-46.4.24.161:9030 orport=9001 id=DB4C76A3AD7E234DA0F00D6F1405D8AFDF4D8DED
-46.4.24.161:9031 orport=9002 id=7460F3D12EBE861E4EE073F6233047AACFE46AB4
-46.38.51.132:9030 orport=9001 id=810DEFA7E90B6C6C383C063028EC397A71D7214A
-163.172.194.53:9030 orport=9001 id=8C00FA7369A7A308F6A137600F0FA07990D9D451 ipv6=[2001:bc8:225f:142:6c69:7461:7669:73]:9001
-
-# Email sent directly to teor, verified using relay contact info
-176.10.107.180:9030 orport=9001 id=3D7E274A87D9A89AF064C13D1EE4CA1F184F2600
-
-# Email sent directly to teor, verified using relay contact info
-46.28.207.19:80 orport=443 id=5B92FA5C8A49D46D235735504C72DBB3472BA321
-46.28.207.141:80 orport=443 id=F69BED36177ED727706512BA6A97755025EEA0FB
-46.28.205.170:80 orport=443 id=AF322D83A4D2048B22F7F1AF5F38AFF4D09D0B76
-95.183.48.12:80 orport=443 id=7187CED1A3871F837D0E60AC98F374AC541CB0DA
-
-# Email sent directly to teor, verified using relay contact info
-93.180.156.84:9030 orport=9001 id=8844D87E9B038BE3270938F05AF797E1D3C74C0F
-
-# Email sent directly to teor, verified using relay contact info
-37.187.115.157:9030 orport=9001 id=D5039E1EBFD96D9A3F9846BF99EC9F75EDDE902A
-
-# Email sent directly to teor, verified using relay contact info
-5.34.183.205:80 orport=443 id=DDD7871C1B7FA32CB55061E08869A236E61BDDF8
-
-# Email sent directly to teor, verified using relay contact info
-51.254.246.203:9030 orport=9001 id=47B596B81C9E6277B98623A84B7629798A16E8D5
-
-# Email sent directly to teor, verified using relay contact info
-5.9.146.203:80 orport=443 id=1F45542A24A61BF9408F1C05E0DCE4E29F2CBA11
-
-# Email sent directly to teor, verified using relay contact info
-# Updated details from atlas based on ticket #20010
-163.172.176.167:80 orport=443 id=230A8B2A8BA861210D9B4BA97745AEC217A94207
-163.172.149.155:80 orport=443 id=0B85617241252517E8ECF2CFC7F4C1A32DCD153F
-163.172.149.122:80 orport=443 id=A9406A006D6E7B5DA30F2C6D4E42A338B5E340B2
-
-# Email sent directly to teor, verified using relay contact info
-204.11.50.131:9030 orport=9001 id=185F2A57B0C4620582602761097D17DB81654F70
-
-# Email sent directly to teor, verified using relay contact info
-151.236.222.217:44607 orport=9001 id=94D58704C2589C130C9C39ED148BD8EA468DBA54
-
-# Email sent directly to teor, verified using relay contact info
-185.35.202.221:9030 orport=9001 id=C13B91384CDD52A871E3ECECE4EF74A7AC7DCB08 ipv6=[2a02:ed06::221]:9001
-
-# Email sent directly to teor, verified using relay contact info
-5.9.151.241:9030 orport=4223 id=9BF04559224F0F1C3C953D641F1744AF0192543A ipv6=[2a01:4f8:190:34f0::2]:4223
-
-# Email sent directly to teor, verified using relay contact info
-89.40.71.149:8081 orport=8080 id=EC639EDAA5121B47DBDF3D6B01A22E48A8CB6CC7
-
-# Email sent directly to teor, verified using relay contact info
-92.222.20.130:80 orport=443 id=0639612FF149AA19DF3BCEA147E5B8FED6F3C87C
-
-# Email sent directly to teor, verified using relay contact info
-80.112.155.100:9030 orport=9001 id=53B000310984CD86AF47E5F3CD0BFF184E34B383 ipv6=[2001:470:7b02::38]:9001
-
-# Email sent directly to teor, verified using relay contact info
-83.212.99.68:80 orport=443 id=DDBB2A38252ADDA53E4492DDF982CA6CC6E10EC0 ipv6=[2001:648:2ffc:1225:a800:bff:fe3d:67b5]:443
-
-# Email sent directly to teor, verified using relay contact info
-95.130.11.147:9030 orport=443 id=6B697F3FF04C26123466A5C0E5D1F8D91925967A
-
-# Email sent directly to teor, verified using relay contact info
-128.199.55.207:9030 orport=9001 id=BCEF908195805E03E92CCFE669C48738E556B9C5 ipv6=[2a03:b0c0:2:d0::158:3001]:9001
-
-# Email sent directly to teor, verified using relay contact info
-178.32.216.146:9030 orport=9001 id=17898F9A2EBC7D69DAF87C00A1BD2FABF3C9E1D2
-
-# Email sent directly to teor, verified using relay contact info
-212.83.40.238:9030 orport=9001 id=F409FA7902FD89270E8DE0D7977EA23BC38E5887
-
-# Email sent directly to teor, verified using relay contact info
-204.8.156.142:80 orport=443 id=94C4B7B8C50C86A92B6A20107539EE2678CF9A28
-
-# Email sent directly to teor, verified using relay contact info
-80.240.139.111:80 orport=443 id=DD3BE7382C221F31723C7B294310EF9282B9111B
-
-# Email sent directly to teor, verified using relay contact info
-185.97.32.18:9030 orport=9001 id=04250C3835019B26AA6764E85D836088BE441088
-
-# Email sent directly to teor
-149.56.45.200:9030 orport=9001 id=FE296180018833AF03A8EACD5894A614623D3F76 ipv6=[2607:5300:201:3000::17d3]:9002 # PiotrTorpotkinOne
-
-# Email sent directly to teor, verified using relay contact info
-81.2.209.10:443 orport=80 id=B6904ADD4C0D10CDA7179E051962350A69A63243 ipv6=[2001:15e8:201:1::d10a]:80
-
-# Email sent directly to teor, verified using relay contact info
-# IPv6 address unreliable
-195.154.164.243:80 orport=443 id=AC66FFA4AB35A59EBBF5BF4C70008BF24D8A7A5C #ipv6=[2001:bc8:399f:f000::1]:993
-138.201.26.2:80 orport=443 id=6D3A3ED5671E4E3F58D4951438B10AE552A5FA0F
-81.7.16.182:80 orport=443 id=51E1CF613FD6F9F11FE24743C91D6F9981807D82 ipv6=[2a02:180:1:1::517:10b6]:993
-134.119.36.135:80 orport=443 id=763C9556602BD6207771A7A3D958091D44C43228 ipv6=[2a00:1158:3::2a8]:993
-46.228.199.19:80 orport=443 id=E26AFC5F718E21AC502899B20C653AEFF688B0D2 ipv6=[2001:4ba0:cafe:4a::1]:993
-37.200.98.5:80 orport=443 id=231C2B9C8C31C295C472D031E06964834B745996 ipv6=[2a00:1158:3::11a]:993
-46.23.70.195:80 orport=443 id=C9933B3725239B6FAB5227BA33B30BE7B48BB485
-185.15.244.124:80 orport=443 id=935BABE2564F82016C19AEF63C0C40B5753BA3D2 ipv6=[2001:4ba0:cafe:e35::1]:993
-195.154.116.232:80 orport=443 id=B35C5739C8C5AB72094EB2B05738FD1F8EEF6EBD ipv6=[2001:bc8:399f:200::1]:993
-195.154.121.198:80 orport=443 id=0C77421C890D16B6D201283A2244F43DF5BC89DD ipv6=[2001:bc8:399f:100::1]:993
-37.187.20.59:80 orport=443 id=91D23D8A539B83D2FB56AA67ECD4D75CC093AC55 ipv6=[2001:41d0:a:143b::1]:993
-217.12.208.117:80 orport=443 id=E6E18151300F90C235D3809F90B31330737CEB43 ipv6=[2a00:1ca8:a7::1bb]:993
-81.7.10.251:80 orport=443 id=8073670F8F852971298F8AF2C5B23AE012645901 ipv6=[2a02:180:1:1::517:afb]:993
-46.36.39.50:80 orport=443 id=ED4B0DBA79AEF5521564FA0231455DCFDDE73BB6 ipv6=[2a02:25b0:aaaa:aaaa:8d49:b692:4852:0]:995
-91.194.90.103:80 orport=443 id=75C4495F4D80522CA6F6A3FB349F1B009563F4B7 ipv6=[2a02:c205:3000:5449::1]:993
-163.172.25.118:80 orport=22 id=0CF8F3E6590F45D50B70F2F7DA6605ECA6CD408F
-188.138.88.42:80 orport=443 id=70C55A114C0EF3DC5784A4FAEE64388434A3398F
-81.7.13.84:80 orport=443 id=0C1E7DD9ED0676C788933F68A9985ED853CA5812 ipv6=[2a02:180:1:1::5b8f:538c]:993
-213.246.56.95:80 orport=443 id=27E6E8E19C46751E7312420723C6162FF3356A4C ipv6=[2a00:c70:1:213:246:56:95:1]:993
-94.198.100.18:80 orport=443 id=BAACCB29197DB833F107E410E2BFAE5009EE7583
-217.12.203.46:80 orport=443 id=6A29FD8C00D573E6C1D47852345B0E5275BA3307
-212.117.180.107:80 orport=443 id=0B454C7EBA58657B91133A587C1BDAEDC6E23142
-217.12.199.190:80 orport=443 id=A37C47B03FF31CA6937D3D68366B157997FE7BCD ipv6=[2a02:27a8:0:2::486]:993
-216.230.230.247:80 orport=443 id=4C7BF55B1BFF47993DFF995A2926C89C81E4F04A
-69.30.215.42:80 orport=443 id=510176C07005D47B23E6796F02C93241A29AA0E9 ipv6=[2604:4300:a:2e::2]:993
-89.46.100.162:80 orport=443 id=6B7191639E179965FD694612C9B2C8FB4267B27D
-107.181.174.22:80 orport=443 id=5A551BF2E46BF26CC50A983F7435CB749C752553 ipv6=[2607:f7a0:3:4::4e]:993
-
-# Email sent directly to teor, verified using relay contact info
-212.238.208.48:9030 orport=9001 id=F406219CDD339026D160E53FCA0EF6857C70F109 ipv6=[2001:984:a8fb:1:ba27:ebff:feac:c109]:9001
-
-# Email sent directly to teor
-176.158.236.102:9030 orport=9001 id=DC163DDEF4B6F0C6BC226F9F6656A5A30C5C5686 # Underworld
-
-# Email sent directly to teor, verified using relay contact info
-91.229.20.27:9030 orport=9001 id=9A0D54D3A6D2E0767596BF1515E6162A75B3293F
-
-# Email sent directly to teor, verified using relay contact info
-80.127.137.19:80 orport=443 id=6EF897645B79B6CB35E853B32506375014DE3621 ipv6=[2001:981:47c1:1::6]:443
-
-# Email sent directly to teor
-163.172.138.22:80 orport=443 id=16102E458460349EE45C0901DAA6C30094A9BBEA ipv6=[2001:bc8:4400:2100::1:3]:443 # mkultra
-
-# Email sent directly to teor, verified using relay contact info
-97.74.237.196:9030 orport=9001 id=2F0F32AB1E5B943CA7D062C03F18960C86E70D94
-
-# Email sent directly to teor, verified using relay contact info
-192.187.124.98:9030 orport=9001 id=FD1871854BFC06D7B02F10742073069F0528B5CC
-
-# Email sent directly to teor, verified using relay contact info
-178.62.98.160:9030 orport=9001 id=8B92044763E880996A988831B15B2B0E5AD1544A
-
-# Email sent directly to teor, verified using relay contact info
-163.172.217.50:9030 orport=9001 id=02ECD99ECD596013A8134D46531560816ECC4BE6
-
-# Email sent directly to teor, verified using relay contact info
-185.100.86.100:80 orport=443 id=0E8C0C8315B66DB5F703804B3889A1DD66C67CE0
-185.100.84.82:80 orport=443 id=7D05A38E39FC5D29AFE6BE487B9B4DC9E635D09E
-
-# Email sent directly to teor, verified using relay contact info
-78.24.75.53:9030 orport=9001 id=DEB73705B2929AE9BE87091607388939332EF123
-
-# Email sent directly to teor, verified using relay contact info
-46.101.237.246:9030 orport=9001 id=75F1992FD3F403E9C082A5815EB5D12934CDF46C ipv6=[2a03:b0c0:3:d0::208:5001]:9050
-178.62.86.96:9030 orport=9001 id=439D0447772CB107B886F7782DBC201FA26B92D1 ipv6=[2a03:b0c0:1:d0::3cf:7001]:9050
-
-# Email sent directly to teor, verified using relay contact info
-# Very low bandwidth, stale consensues, excluded to cut down on warnings
-#91.233.106.121:80 orport=443 id=896364B7996F5DFBA0E15D1A2E06D0B98B555DD6
-
-# Email sent directly to teor, verified using relay contact info
-167.114.113.48:9030 orport=403 id=2EC0C66EA700C44670444280AABAB1EC78B722A0
-
-# Email sent directly to teor, verified using relay contact info
-# Assume details update is permanent
-213.141.138.174:9030 orport=9001 id=BD552C165E2ED2887D3F1CCE9CFF155DDA2D86E6 # Schakalium
-
-# Email sent directly to teor, verified using relay contact info
-95.128.43.164:80 orport=443 id=616081EC829593AF4232550DE6FFAA1D75B37A90 ipv6=[2a02:ec0:209:10::4]:443
-
-# Email sent directly to teor, verified using relay contact info
-166.82.21.200:9030 orport=9029 id=D5C33F3E203728EDF8361EA868B2939CCC43FAFB
-
-# Email sent directly to teor, verified using relay contact info
-91.121.54.8:9030 orport=9001 id=CBEE0F3303C8C50462A12107CA2AE061831931BC
-
-# Email sent directly to teor, verified using relay contact info
-178.217.184.32:8080 orport=443 id=8B7F47AE1A5D954A3E58ACDE0865D09DBA5B738D
-
-# Email sent directly to teor, verified using relay contact info
-85.10.201.47:9030 orport=9001 id=D8B7A3A6542AA54D0946B9DC0257C53B6C376679 ipv6=[2a01:4f8:a0:43eb::beef]:9001
-
-# Email sent directly to teor, verified using relay contact info
-120.29.217.46:80 orport=443 id=5E853C94AB1F655E9C908924370A0A6707508C62
-
-# Email sent directly to teor, verified using relay contact info
-37.153.1.10:9030 orport=9001 id=9772EFB535397C942C3AB8804FB35CFFAD012438
-
-# Email sent directly to teor, verified using relay contact info
-92.222.4.102:9030 orport=9001 id=1A6B8B8272632D8AD38442027F822A367128405C
-
-# Email sent directly to teor, verified using relay contact info
-31.31.78.49:80 orport=443 id=46791D156C9B6C255C2665D4D8393EC7DBAA7798
-
-# Email sent directly to teor
-192.160.102.169:80 orport=9001 id=C0192FF43E777250084175F4E59AC1BA2290CE38 ipv6=[2620:132:300c:c01d::9]:9002 # manipogo
-192.160.102.166:80 orport=9001 id=547DA56F6B88B6C596B3E3086803CDA4F0EF8F21 ipv6=[2620:132:300c:c01d::6]:9002 # chaucer
-192.160.102.170:80 orport=9001 id=557ACEC850F54EEE65839F83CACE2B0825BE811E ipv6=[2620:132:300c:c01d::a]:9002 # ogopogo
-192.160.102.164:80 orport=9001 id=823AA81E277F366505545522CEDC2F529CE4DC3F ipv6=[2620:132:300c:c01d::4]:9002 # snowfall
-192.160.102.165:80 orport=9001 id=C90CA3B7FE01A146B8268D56977DC4A2C024B9EA ipv6=[2620:132:300c:c01d::5]:9002 # cowcat
-192.160.102.168:80 orport=9001 id=F6A358DD367B3282D6EF5824C9D45E1A19C7E815 ipv6=[2620:132:300c:c01d::8]:9002 # prawksi
-
-# Email sent directly to teor, verified using relay contact info
-136.243.214.137:80 orport=443 id=B291D30517D23299AD7CEE3E60DFE60D0E3A4664
-
-# Email sent directly to teor, verified using relay contact info
-192.87.28.28:9030 orport=9001 id=ED2338CAC2711B3E331392E1ED2831219B794024
-192.87.28.82:9030 orport=9001 id=844AE9CAD04325E955E2BE1521563B79FE7094B7
-
-# Email sent directly to teor, verified using relay contact info
-192.87.28.28:9030 orport=9001 id=ED2338CAC2711B3E331392E1ED2831219B794024
-# same machine as ED2338CAC2711B3E331392E1ED2831219B794024
-192.87.28.82:9030 orport=9001 id=844AE9CAD04325E955E2BE1521563B79FE7094B7
-
-# https://twitter.com/kosjoli/status/719507270904758272
-85.10.202.87:9030 orport=9001 id=971AFB23C168DCD8EDA17473C1C452B359DE3A5A
-176.9.5.116:9030 orport=9001 id=A1EB8D8F1EE28DB98BBB1EAA3B4BEDD303BAB911
-46.4.111.124:9030 orport=9001 id=D9065F9E57899B3D272AA212317AF61A9B14D204
-
-# Email sent directly to teor, verified using relay contact info
-185.100.85.61:80 orport=443 id=025B66CEBC070FCB0519D206CF0CF4965C20C96E
-
-# Email sent directly to teor, verified using relay contact info
-108.166.168.158:80 orport=443 id=CDAB3AE06A8C9C6BF817B3B0F1877A4B91465699
-
-# Email sent directly to teor, verified using relay contact info
-91.219.236.222:80 orport=443 id=20704E7DD51501DC303FA51B738D7B7E61397CF6
-
-# Email sent directly to teor, verified using relay contact info
-185.14.185.240:9030 orport=443 id=D62FB817B0288085FAC38A6DC8B36DCD85B70260
-192.34.63.137:9030 orport=443 id=ABCB4965F1FEE193602B50A365425105C889D3F8
-128.199.197.16:9030 orport=443 id=DEE5298B3BA18CDE651421CD2DCB34A4A69F224D
-
-# Email sent directly to teor, verified using relay contact info
-185.13.38.75:9030 orport=9001 id=D2A1703758A0FBBA026988B92C2F88BAB59F9361
-
-# Email sent directly to teor, verified using relay contact info
-128.204.39.106:9030 orport=9001 id=6F0F3C09AF9580F7606B34A7678238B3AF7A57B7
-
-# Email sent directly to teor, verified using relay contact info
-198.50.191.95:80 orport=443 id=39F096961ED2576975C866D450373A9913AFDC92
-
-# Email sent directly to teor, verified using relay contact info
-167.114.66.61:9696 orport=443 id=DE6CD5F09DF26076F26321B0BDFBE78ACD935C65 ipv6=[2607:5300:100::78d]:443
-
-# Email sent directly to teor, verified using relay contact info
-66.111.2.20:9030 orport=9001 id=9A68B85A02318F4E7E87F2828039FBD5D75B0142
-66.111.2.16:9030 orport=9001 id=3F092986E9B87D3FDA09B71FA3A602378285C77A
-
-# Email sent directly to teor, verified using relay contact info
-92.222.38.67:80 orport=443 id=DED6892FF89DBD737BA689698A171B2392EB3E82
-
-# Email sent directly to teor, verified using relay contact info
-212.47.228.115:9030 orport=443 id=BCA017ACDA48330D02BB70716639ED565493E36E
-
-# Email sent directly to teor, verified using relay contact info
-185.100.84.175:80 orport=443 id=39B59AF4FE54FAD8C5085FA9C15FDF23087250DB
-
-# Email sent directly to teor, verified using relay contact info
-166.70.207.2:9030 orport=9001 id=E3DB2E354B883B59E8DC56B3E7A353DDFD457812
-
-# Emails sent directly to teor, verified using relay contact info
-69.162.139.9:9030 orport=9001 id=4791FC0692EAB60DF2BCCAFF940B95B74E7654F6 ipv6=[2607:f128:40:1212::45a2:8b09]:9001
-
-# Email sent directly to teor, verified using relay contact info
-213.239.217.18:1338 orport=1337 id=C37BC191AC389179674578C3E6944E925FE186C2 ipv6=[2a01:4f8:a0:746a:101:1:1:1]:1337
-
-# Email sent directly to teor, verified using relay contact info
-# Assume details update is permanent
-188.40.128.246:9030 orport=9001 id=AD19490C7DBB26D3A68EFC824F67E69B0A96E601 ipv6=[2a01:4f8:221:1ac1:dead:beef:7005:9001]:9001 # sputnik
-129.13.131.140:80 orport=443 id=F2DFE5FA1E4CF54F8E761A6D304B9B4EC69BDAE8 ipv6=[2a00:1398:5:f604:cafe:cafe:cafe:9001]:443 # AlleKochenKaffee
-
-# Email sent directly to teor, verified using relay contact info
-88.198.253.13:9030 orport=9001 id=DF924196D69AAE3C00C115A9CCDF7BB62A175310 ipv6=[2a01:4f8:11a:b1f::2]:9001
-
-# Email sent directly to teor, verified using relay contact info
-185.100.86.128:9030 orport=9001 id=9B31F1F1C1554F9FFB3455911F82E818EF7C7883
-46.36.36.127:9030 orport=9001 id=C80DF89B21FF932DEC0D7821F679B6C79E1449C3
-
-# Email sent directly to teor, verified using relay contact info
-176.10.104.240:80 orport=443 id=0111BA9B604669E636FFD5B503F382A4B7AD6E80
-176.10.104.240:8080 orport=8443 id=AD86CD1A49573D52A7B6F4A35750F161AAD89C88
-176.10.104.243:8080 orport=8443 id=95DA61AEF23A6C851028C1AA88AD8593F659E60F
-94.230.208.147:80 orport=443 id=9AA3FF35E7A549D2337E962333D366E102FE4D50 ipv6=[2a02:418:6017::147]:443
-
-# Email sent directly to teor, verified using relay contact info
-107.170.101.39:9030 orport=443 id=30973217E70AF00EBE51797FF6D9AA720A902EAA
-
-# Email sent directly to teor
-193.70.112.165:80 orport=443 id=F10BDE279AE71515DDCCCC61DC19AC8765F8A3CC # ParkBenchInd001
-
-# Email sent directly to teor
-185.220.101.6:10006 orport=20006 id=C08DE49658E5B3CFC6F2A952B453C4B608C9A16A # niftyvolcanorabbit
-185.220.101.13:10013 orport=20013 id=71AB4726D830FAE776D74AEF790CF04D8E0151B4 # niftycottontail
-185.220.101.5:10005 orport=20005 id=1084200B44021D308EA4253F256794671B1D099A # niftyhedgehog
-185.220.101.9:10009 orport=20009 id=14877C6384A9E793F422C8D1DDA447CACA4F7C4B # niftywoodmouse
-185.220.101.8:10008 orport=20008 id=24E91955D969AEA1D80413C64FE106FAE7FD2EA9 # niftymouse
-185.220.101.1:10001 orport=20001 id=28F4F392F8F19E3FBDE09616D9DB8143A1E2DDD3 # niftycottonmouse
-185.220.101.21:10021 orport=20021 id=348B89013EDDD99E4755951D1EC284D9FED71226 # niftysquirrel
-185.220.101.10:10010 orport=20010 id=4031460683AE9E0512D3620C2758D98758AC6C93 # niftyeuropeanrabbit
-185.220.101.34:10034 orport=20034 id=47C42E2094EE482E7C9B586B10BABFB67557030B # niftyquokka
-185.220.101.18:10018 orport=20018 id=5D5006E4992F2F97DF4F8B926C3688870EB52BD8 # niftyplagiodontia
-185.220.101.28:10028 orport=20028 id=609E598FB6A00BCF7872906B602B705B64541C50 # niftychipmunk
-185.220.101.20:10020 orport=20020 id=619349D82424C601CAEB94161A4CF778993DAEE7 # niftytucotuco
-185.220.101.17:10017 orport=20017 id=644DECC5A1879C0FE23DE927DD7049F58BBDF349 # niftyhutia
-185.220.101.0:10000 orport=20000 id=6E94866ED8CA098BACDFD36D4E8E2B459B8A734E # niftybeaver
-185.220.101.30:10030 orport=20030 id=71CFDEB4D9E00CCC3E31EC4E8A29E109BBC1FB36 # niftypedetidae
-185.220.101.29:10029 orport=20029 id=7DC52AE6667A30536BA2383CD102CFC24F20AD71 # niftyllipika
-185.220.101.41:10041 orport=20041 id=7E281CD2C315C4F7A84BC7C8721C3BC974DDBFA3 # niftyporcupine
-185.220.101.25:10025 orport=20025 id=8EE0534532EA31AA5172B1892F53B2F25C76EB02 # niftyjerboa
-185.220.101.33:10033 orport=20033 id=906DCB390F2BA987AE258D745E60BAAABAD31DE8 # niftyquokka
-185.220.101.26:10026 orport=20026 id=92A6085EABAADD928B6F8E871540A1A41CBC08BA # niftypedetes
-185.220.101.40:10040 orport=20040 id=9A857254F379194D1CD76F4A79A20D2051BEDA3F # niftynutria
-185.220.101.42:10042 orport=20042 id=9B816A5B3EB20B8E4E9B9D1FBA299BD3F40F0320 # niftypygmyjerboa
-185.220.101.2:10002 orport=20002 id=B740BCECC4A9569232CDD45C0E1330BA0D030D33 # niftybunny
-185.220.101.32:10032 orport=20032 id=B771AA877687F88E6F1CA5354756DF6C8A7B6B24 # niftypika
-185.220.101.12:10012 orport=20012 id=BC82F2190DE2E97DE65F49B4A95572374BDC0789 # niftycapybara
-185.220.101.22:10022 orport=20022 id=CA37CD46799449D83B6B98B8C22C649906307888 # niftyjackrabbit
-185.220.101.4:10004 orport=20004 id=CDA2EA326E2272C57ACB26773D7252C211795B78 # niftygerbil
-185.220.101.14:10014 orport=20014 id=E7EBA5D8A4E09684D11A1DF24F75362817333768 # niftyhare
-185.220.101.16:10016 orport=20016 id=EC1997D51892E4607C68E800549A1E7E4694005A # niftyguineapig
-185.220.101.24:10024 orport=20024 id=FDA70EC93DB01E3CB418CB6943B0C68464B18B4C # niftyrat
-
-# Email sent directly to teor, verified using relay contact info
-198.232.165.2:9030 orport=9001 id=30C19B81981F450C402306E2E7CFB6C3F79CB6B2
-
-# Emails sent directly to teor, verified using relay contact info
-51.254.101.242:9002 orport=9001 id=4CC9CC9195EC38645B699A33307058624F660CCF
-
-# Emails sent directly to teor, verified using relay contact info
-# Updated IP https://trac.torproject.org/projects/tor/ticket/24805#comment:16
-94.130.186.5:80 orport=443 id=6A7551EEE18F78A9813096E82BF84F740D32B911
-
-# Email sent directly to teor, verified using relay contact info
-173.255.245.116:9030 orport=9001 id=91E4015E1F82DAF0121D62267E54A1F661AB6DC7
-
-# Email sent directly to teor, verified using relay contact info
-62.216.5.120:9030 orport=9001 id=D032D4D617140D6B828FC7C4334860E45E414FBE
-
-# Email sent directly to teor, verified using relay contact info
-51.254.136.195:80 orport=443 id=7BB70F8585DFC27E75D692970C0EEB0F22983A63
-
-# Email sent directly to teor, verified using relay contact info
-5.196.88.122:9030 orport=9001 id=0C2C599AFCB26F5CFC2C7592435924C1D63D9484 ipv6=[2001:41d0:a:fb7a::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-5.9.158.75:80 orport=443 id=1AF72E8906E6C49481A791A6F8F84F8DFEBBB2BA ipv6=[2a01:4f8:190:514a::2]:443
-5.9.158.75:9030 orport=9001 id=D11D11877769B9E617537B4B46BFB92B443DE33D ipv6=[2a01:4f8:190:514a::2]:9001
-
-# Email sent directly to teor, verified using relay contact info
-46.101.169.151:9030 orport=9001 id=D760C5B436E42F93D77EF2D969157EEA14F9B39C ipv6=[2a03:b0c0:3:d0::74f:a001]:9001
-
-# Email sent directly to teor, verified using relay contact info
-199.249.223.81:80 orport=443 id=F7447E99EB5CBD4D5EB913EE0E35AC642B5C1EF3
-199.249.223.79:80 orport=443 id=D33292FEDE24DD40F2385283E55C87F85C0943B6
-199.249.223.78:80 orport=443 id=EC15DB62D9101481F364DE52EB8313C838BDDC29
-199.249.223.77:80 orport=443 id=CC4A3AE960E3617F49BF9887B79186C14CBA6813
-199.249.223.76:80 orport=443 id=43209F6D50C657A56FE79AF01CA69F9EF19BD338
-199.249.223.75:80 orport=443 id=60D3667F56AEC5C69CF7E8F557DB21DDF6C36060
-199.249.223.74:80 orport=443 id=5F4CD12099AF20FAF9ADFDCEC65316A376D0201C
-199.249.223.73:80 orport=443 id=5649CB2158DA94FB747415F26628BEC07FA57616
-199.249.223.72:80 orport=443 id=B028707969D8ED84E6DEA597A884F78AAD471971
-199.249.223.71:80 orport=443 id=B6320E44A230302C7BF9319E67597A9B87882241
-199.249.223.60:80 orport=443 id=B7047FBDE9C53C39011CA84E5CB2A8E3543066D0
-199.249.223.61:80 orport=443 id=40E7D6CE5085E4CDDA31D51A29D1457EB53F12AD
-199.249.223.62:80 orport=443 id=0077BCBA7244DB3E6A5ED2746E86170066684887
-199.249.223.63:80 orport=443 id=1DB25DF59DAA01B5BE3D3CEB8AFED115940EBE8B
-199.249.223.64:80 orport=443 id=9F2856F6D2B89AD4EF6D5723FAB167DB5A53519A
-199.249.223.65:80 orport=443 id=9D21F034C3BFF4E7737D08CF775DC1745706801F
-199.249.223.66:80 orport=443 id=C5A53BCC174EF8FD0DCB223E4AA929FA557DEDB2
-199.249.223.67:80 orport=443 id=155D6F57425F16C0624D77777641E4EB1B47C6F0
-199.249.223.68:80 orport=443 id=DF20497E487A979995D851A5BCEC313DF7E5BC51
-199.249.223.69:80 orport=443 id=7FA8E7E44F1392A4E40FFC3B69DB3B00091B7FD3
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-December/011114.html
-86.105.212.130:9030 orport=443 id=9C900A7F6F5DD034CFFD192DAEC9CCAA813DB022
-
-# Email sent directly to teor, verified using relay contact info
-178.33.183.251:80 orport=443 id=DD823AFB415380A802DCAEB9461AE637604107FB ipv6=[2001:41d0:2:a683::251]:443
-
-# Email sent directly to teor, verified using relay contact info
-31.185.104.19:80 orport=443 id=9EAD5B2D3DBD96DBC80DCE423B0C345E920A758D
-# same machine as 9EAD5B2D3DBD96DBC80DCE423B0C345E920A758D
-31.185.104.20:80 orport=443 id=ADB2C26629643DBB9F8FE0096E7D16F9414B4F8D
-31.185.104.21:80 orport=443 id=C2AAB088555850FC434E68943F551072042B85F1
-31.185.104.22:80 orport=443 id=5BA3A52760A0EABF7E7C3ED3048A77328FF0F148
-
-# Email sent directly to teor, verified using relay contact info
-185.34.60.114:80 orport=443 id=7F7A695DF6F2B8640A70B6ADD01105BC2EBC5135
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013939.html
-94.142.242.84:80 orport=443 id=AA0D167E03E298F9A8CD50F448B81FBD7FA80D56 ipv6=[2a02:898:24:84::1]:443 # rejozenger
-
-# Email sent directly to teor, verified using relay contact info
-185.129.62.62:9030 orport=9001 id=ACDD9E85A05B127BA010466C13C8C47212E8A38F ipv6=[2a06:d380:0:3700::62]:9001
-
-# Email sent directly to teor, verified using relay contact info
-# The e84 part of the IPv6 address does not have a leading 0 in the consensus
-81.30.158.213:9030 orport=9001 id=789EA6C9AE9ADDD8760903171CFA9AC5741B0C70 ipv6=[2001:4ba0:cafe:e84::1]:9001
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-December/011209.html
-5.9.159.14:9030 orport=9001 id=0F100F60C7A63BED90216052324D29B08CFCF797
-
-# Email sent directly to teor, verified using relay contact info
-45.62.255.25:80 orport=443 id=3473ED788D9E63361D1572B7E82EC54338953D2A
-
-# Email sent directly to teor, verified using relay contact info
-217.79.179.177:9030 orport=9001 id=3E53D3979DB07EFD736661C934A1DED14127B684 ipv6=[2001:4ba0:fff9:131:6c4f::90d3]:9001
-
-# Email sent directly to teor, verified using relay contact info
-212.47.244.38:8080 orport=443 id=E81EF60A73B3809F8964F73766B01BAA0A171E20
-163.172.157.213:8080 orport=443 id=4623A9EC53BFD83155929E56D6F7B55B5E718C24
-163.172.139.104:8080 orport=443 id=68F175CCABE727AA2D2309BCD8789499CEE36ED7
-
-# Email sent directly to teor, verified using relay contact info
-163.172.223.200:80 orport=443 id=998BF3ED7F70E33D1C307247B9626D9E7573C438
-195.154.122.54:80 orport=443 id=64E99CB34C595A02A3165484BD1215E7389322C6
-
-# Email sent directly to teor, verified using relay contact info
-# Email sent directly to Phoul
-185.100.86.128:9030 orport=9001 id=9B31F1F1C1554F9FFB3455911F82E818EF7C7883
-185.100.85.101:9030 orport=9001 id=4061C553CA88021B8302F0814365070AAE617270
-
-# Email sent directly to teor, verified using relay contact info
-89.163.247.43:9030 orport=9001 id=BC7ACFAC04854C77167C7D66B7E471314ED8C410 ipv6=[2001:4ba0:fff7:25::5]:9001
-
-# Email sent directly to teor, verified using relay contact info
-95.85.8.226:80 orport=443 id=1211AC1BBB8A1AF7CBA86BCE8689AA3146B86423
-
-# Email sent directly to teor, verified using relay contact info
-85.214.151.72:9030 orport=9001 id=722D365140C8C52DBB3C9FF6986E3CEFFE2BA812
-
-# email sent directly to teor
-72.52.75.27:9030 orport=9001 id=8567AD0A6369ED08527A8A8533A5162AC00F7678 # piecoopdotnet
-
-# Email sent directly to teor, verified using relay contact info
-5.9.146.203:80 orport=443 id=1F45542A24A61BF9408F1C05E0DCE4E29F2CBA11
-5.9.159.14:9030 orport=9001 id=0F100F60C7A63BED90216052324D29B08CFCF797
-
-# Email sent directly to teor, verified using relay contact info
-# Assume details update is permanent
-5.9.147.226:9030 orport=9001 id=B0553175AADB0501E5A61FC61CEA3970BE130FF2 ipv6=[2a01:4f8:190:30e1::2]:9001 # zwiubel
-
-# https://trac.torproject.org/projects/tor/ticket/22527#comment:1
-199.184.246.250:80 orport=443 id=1F6ABD086F40B890A33C93CC4606EE68B31C9556 ipv6=[2620:124:1009:1::171]:443
-
-# https://trac.torproject.org/projects/tor/ticket/24695
-163.172.53.84:143 orport=21 id=1C90D3AEADFF3BCD079810632C8B85637924A58E ipv6=[2001:bc8:24f8::]:21 # Multivac
-
-# Email sent directly to teor
-54.36.237.163:80 orport=443 id=DB2682153AC0CCAECD2BD1E9EBE99C6815807A1E # GermanCraft2
-
-# Email sent directly to teor
-62.138.7.171:9030 orport=9001 id=9844B981A80B3E4B50897098E2D65167E6AEF127 # 0x3d004
-62.138.7.171:8030 orport=8001 id=9285B22F7953D7874604EEE2B470609AD81C74E9 # 0x3d005
-91.121.23.100:9030 orport=9001 id=3711E80B5B04494C971FB0459D4209AB7F2EA799 # 0x3d002
-91.121.23.100:8030 orport=8001 id=CFBBA0D858F02E40B1432A65F6D13C9BDFE7A46B # 0x3d001
-51.15.13.245:9030 orport=9001 id=CED527EAC230E7B56E5B363F839671829C3BA01B # 0x3d006
-51.15.13.245:8030 orport=8001 id=8EBB8D1CF48FE2AB95C451DA8F10DB6235F40F8A # 0x3d007
-
-# Email sent directly to teor
-104.192.5.248:9030 orport=9001 id=BF735F669481EE1CCC348F0731551C933D1E2278 # Freeway11
-
-# Email sent directly to teor
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013961.html
-178.17.174.14:9030 orport=9001 id=B06F093A3D4DFAD3E923F4F28A74901BD4F74EB1 # TorExitMoldova
-178.17.170.156:9030 orport=9001 id=41C59606AFE1D1AA6EC6EF6719690B856F0B6587 # TorExitMoldova2
-
-# Email sent directly to teor
-163.172.221.44:59030 orport=59001 id=164604F5C86FC8CC9C0288BD9C02311958427597 # altego
-
-# Email sent directly to teor
-46.38.237.221:9030 orport=9001 id=D30E9D4D639068611D6D96861C95C2099140B805 # mine
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013911.html
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013912.html
-199.249.223.62:80 orport=443 id=0077BCBA7244DB3E6A5ED2746E86170066684887 # Quintex13
-199.249.224.45:80 orport=443 id=041646640AB306EA74B001966E86169B04CC88D2 # QuintexAirVPN26
-199.249.223.67:80 orport=443 id=155D6F57425F16C0624D77777641E4EB1B47C6F0 # Quintex18
-199.249.223.45:80 orport=443 id=1AE949967F82BBE7534A3D6BA77A7EBE1CED4369 # Quintex36
-199.249.223.63:80 orport=443 id=1DB25DF59DAA01B5BE3D3CEB8AFED115940EBE8B # Quintex14
-199.249.224.63:80 orport=443 id=1E5136DDC52FAE1219208F0A6BADB0BA62587EE6 # Quintex43
-199.249.224.46:80 orport=443 id=2ED4D25766973713EB8C56A290BF07E06B85BF12 # QuintexAirVPN27
-199.249.223.42:80 orport=443 id=3687FEC7E73F61AC66F7AE251E7DEE6BBD8C0252 # Quintex33
-199.249.223.49:80 orport=443 id=36D68478366CB8627866757EBCE7FB3C17FC1CB8 # Quintex40
-199.249.224.49:80 orport=443 id=3CA0D15567024D2E0B557DC0CF3E962B37999A79 # QuintexAirVPN30
-199.249.223.61:80 orport=443 id=40E7D6CE5085E4CDDA31D51A29D1457EB53F12AD # Quintex12
-199.249.223.76:80 orport=443 id=43209F6D50C657A56FE79AF01CA69F9EF19BD338 # QuintexAirVPN5
-199.249.224.41:80 orport=443 id=54A4820B46E65509BF3E2B892E66930A41759DE9 # QuintexAirVPN22
-199.249.223.73:80 orport=443 id=5649CB2158DA94FB747415F26628BEC07FA57616 # QuintexAirVPN8
-199.249.223.74:80 orport=443 id=5F4CD12099AF20FAF9ADFDCEC65316A376D0201C # QuintexAirVPN7
-199.249.223.75:80 orport=443 id=60D3667F56AEC5C69CF7E8F557DB21DDF6C36060 # QuintexAirVPN6
-199.249.223.46:80 orport=443 id=66E19E8C4773086F669A1E06A3F8C23B6C079129 # Quintex37
-199.249.224.65:80 orport=443 id=764BF8A03868F84C8F323C1A676AA254B80DC3BF # Quintex45
-199.249.223.48:80 orport=443 id=7A3DD280EA4CD4DD16EF8C67B93D9BDE184D1A81 # Quintex39
-199.249.224.68:80 orport=443 id=7E6E9A6FDDB8DC7C92F0CFCC3CBE76C29F061799 # Quintex48
-199.249.223.69:80 orport=443 id=7FA8E7E44F1392A4E40FFC3B69DB3B00091B7FD3 # Quintex20
-199.249.223.44:80 orport=443 id=8B80169BEF71450FC4069A190853523B7AEA45E1 # Quintex35
-199.249.224.60:80 orport=443 id=9314BD9503B9014261A65C221D77E57389DBCCC1 # Quintex50
-199.249.224.40:80 orport=443 id=9C1E7D92115D431385B8CAEA6A7C15FB89CE236B # QuintexAirVPN21
-199.249.223.65:80 orport=443 id=9D21F034C3BFF4E7737D08CF775DC1745706801F # Quintex16
-199.249.224.67:80 orport=443 id=9E2D7C6981269404AA1970B53891701A20424EF8 # Quintex47
-199.249.223.64:80 orport=443 id=9F2856F6D2B89AD4EF6D5723FAB167DB5A53519A # Quintex15
-199.249.224.48:80 orport=443 id=A0DB820FEC87C0405F7BF05DEE5E4ADED2BB9904 # QuintexAirVPN29
-199.249.224.64:80 orport=443 id=A4A393FEF48640961AACE92D041934B55348CEF9 # Quintex44
-199.249.223.72:80 orport=443 id=B028707969D8ED84E6DEA597A884F78AAD471971 # QuintexAirVPN9
-199.249.223.40:80 orport=443 id=B0CD9F9B5B60651ADC5919C0F1EAA87DBA1D9249 # Quintex31
-199.249.224.61:80 orport=443 id=B2197C23A4FF5D1C49EE45BA7688BA8BCCD89A0B # Quintex41
-199.249.223.71:80 orport=443 id=B6320E44A230302C7BF9319E67597A9B87882241 # QuintexAirVPN10
-199.249.223.60:80 orport=443 id=B7047FBDE9C53C39011CA84E5CB2A8E3543066D0 # Quintex11
-199.249.224.66:80 orport=443 id=C78AFFEEE320EA0F860961763E613FD2FAC855F5 # Quintex46
-199.249.224.44:80 orport=443 id=CB7C0D841FE376EF43F7845FF201B0290C0A239E # QuintexAirVPN25
-199.249.223.47:80 orport=443 id=CC14C97F1D23EE97766828FC8ED8582E21E11665 # Quintex38
-199.249.223.77:80 orport=443 id=CC4A3AE960E3617F49BF9887B79186C14CBA6813 # QuintexAirVPN4
-199.249.223.41:80 orport=443 id=D25210CE07C49F2A4F2BC7A506EB0F5EA7F5E2C2 # Quintex32
-199.249.223.79:80 orport=443 id=D33292FEDE24DD40F2385283E55C87F85C0943B6 # QuintexAirVPN2
-199.249.224.47:80 orport=443 id=D6FF2697CEA5C0C7DA84797C2E71163814FC2466 # QuintexAirVPN28
-199.249.223.68:80 orport=443 id=DF20497E487A979995D851A5BCEC313DF7E5BC51 # Quintex19
-199.249.223.43:80 orport=443 id=E480D577F58E782A5BC4FA6F49A6650E9389302F # Quintex34
-199.249.224.69:80 orport=443 id=EABC2DD0D47B5DB11F2D37EB3C60C2A4D91C10F2 # Quintex49
-199.249.223.78:80 orport=443 id=EC15DB62D9101481F364DE52EB8313C838BDDC29 # QuintexAirVPN3
-199.249.224.42:80 orport=443 id=F21DE9C7DE31601D9716781E17E24380887883D1 # QuintexAirVPN23
-199.249.223.81:80 orport=443 id=F7447E99EB5CBD4D5EB913EE0E35AC642B5C1EF3 # QuintexAirVPN1
-199.249.224.43:80 orport=443 id=FDD700C791CC6BB0AC1C2099A82CBC367AD4B764 # QuintexAirVPN24
-199.249.224.62:80 orport=443 id=FE00A3A835680E67FBBC895A724E2657BB253E97 # Quintex42
-199.249.223.66:80 orport=443 id=C5A53BCC174EF8FD0DCB223E4AA929FA557DEDB2 # Quintex17
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013914.html
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014063.html
-5.196.23.64:9030 orport=9001 id=775B0FAFDE71AADC23FFC8782B7BEB1D5A92733E # Aerodynamik01
-217.182.75.181:9030 orport=9001 id=EFEACD781604EB80FBC025EDEDEA2D523AEAAA2F # Aerodynamik02
-193.70.43.76:9030 orport=9001 id=484A10BA2B8D48A5F0216674C8DD50EF27BC32F3 # Aerodynamik03
-149.56.141.138:9030 orport=9001 id=1938EBACBB1A7BFA888D9623C90061130E63BB3F # Aerodynamik04
-54.37.73.111:9030 orport=9001 id=92412EA1B9AA887D462B51D816777002F4D58907 # Aerodynamik05
-54.37.17.235:9030 orport=9001 id=360CBA08D1E24F513162047BDB54A1015E531534 # Aerodynamik06
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013917.html
-104.200.20.46:80 orport=9001 id=78E2BE744A53631B4AAB781468E94C52AB73968B # bynumlawtor
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013929.html
-139.99.130.178:80 orport=443 id=867B95CACD64653FEEC4D2CEFC5C49B4620307A7 # coffswifi2
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013946.html
-172.98.193.43:80 orport=443 id=5E56738E7F97AA81DEEF59AF28494293DFBFCCDF # Backplane
-
-# Email sent directly to teor
-62.210.254.132:80 orport=443 id=8456DFA94161CDD99E480C2A2992C366C6564410 # turingmachine
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/013960.html
-51.15.205.214:9030 orport=9001 id=8B6556601612F1E2AFCE2A12FFFAF8482A76DD1F ipv6=[2001:bc8:4400:2500::5:b07]:9001 # titania1
-51.15.205.214:9031 orport=9002 id=5E363D72488276160D062DDD2DFA25CFEBAF5EA9 ipv6=[2001:bc8:4400:2500::5:b07]:9002 # titania2
-
-# https://lists.torproject.org/pipermail/tor-relays/2017-December/014000.html
-24.117.231.229:34175 orport=45117 id=CE24412AD69444954B4015E293AE53DDDAFEA3D6 # Anosognosia
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014012.html
-128.31.0.13:80 orport=443 id=A53C46F5B157DD83366D45A8E99A244934A14C46 # csailmitexit
-
-# Email sent directly to teor
-82.247.103.117:110 orport=995 id=C9B3C1661A9577BA24C1C2C6123918921A495509 # Casper01
-109.238.2.79:110 orport=995 id=7520892E3DD133D0B0464D01A158B54B8E2A8B75 # Casper02
-51.15.179.153:110 orport=995 id=BB60F5BA113A0B8B44B7B37DE3567FE561E92F78 # Casper04
-
-# Email sent directly to teor
-80.127.107.179:80 orport=443 id=BC6B2E2F62ACC5EDECBABE64DA1E48F84DD98B78 ipv6=[2001:981:4a22:c::6]:443 # TVISION02
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014020.html
-37.120.174.249:80 orport=443 id=11DF0017A43AF1F08825CD5D973297F81AB00FF3 ipv6=[2a03:4000:6:724c:df98:15f9:b34d:443]:443 # gGDHjdcC6zAlM8k08lX
-
-# These fallbacks opted-in in previous releases, then changed their details,
-# and so we blacklisted them. Now we want to whitelist changes.
-# Assume details update is permanent
-85.230.184.93:9030 orport=443 id=855BC2DABE24C861CD887DB9B2E950424B49FC34 # Logforme
-176.31.180.157:143 orport=22 id=E781F4EC69671B3F1864AE2753E0890351506329 ipv6=[2001:41d0:8:eb9d::1]:22 # armbrust
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014024.html
-82.161.212.209:9030 orport=9001 id=4E8CE6F5651E7342C1E7E5ED031E82078134FB0D ipv6=[2001:980:d7ed:1:ff:b0ff:fe00:d0b]:9001 # ymkeo
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014055.html
-37.157.255.35:9030 orport=9090 id=361D33C96D0F161275EE67E2C91EE10B276E778B # cxx4freedom
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014064.html
-87.118.122.120:80 orport=443 id=A2A6616723B511D8E068BB71705191763191F6B2 # otheontelth
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014069.html
-185.100.86.182:9030 orport=8080 id=E51620B90DCB310138ED89EDEDD0A5C361AAE24E # NormalCitizen
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-January/014267.html
-51.15.72.211:80 orport=9001 id=D122094E396DF8BA560843E7B983B0EA649B7DF9 ipv6=[2001:bc8:4700:2300::1b:f09]:9001 # gjtorrelay
-
-# Email sent directly to Phoul
-185.34.33.2:9265 orport=31415 id=D71B1CA1C9DC7E8CA64158E106AD770A21160FEE # lqdn
-
-# Email sent directly to Phoul
-78.156.110.135:9091 orport=9090 id=F48FD1AED068496D51D1384BC7497C04E4985DA6 # SkynetC2
-
-# Email sent directly to Phoul
-5.200.21.144:80 orport=443 id=0C039F35C2E40DCB71CD8A07E97C7FD7787D42D6 # libel
-64.79.152.132:80 orport=443 id=375DCBB2DBD94E5263BC0C015F0C9E756669617E # ebola
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-June/015524.html
-132.248.241.5:9030 orport=9001 id=4661DE96D3F8E923994B05218F23760C8D7935A4
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-June/015522.html
-96.253.78.108:80 orport=442 id=924B24AFA7F075D059E8EEB284CC400B33D3D036
-
-# Email sent directly to Phoul
-163.172.218.10:9030 orport=9001 id=78809B6C50CB6491DB3A72C60EC39DC85BF72D1F ipv6=[2001:bc8:3f23:1100::1]:9001
-163.172.218.10:9130 orport=9101 id=B247BA9E0AEA93E6D7BF4080CFBB964034AF2B28 ipv6=[2001:bc8:3f23:1100::1]:9101
-
-# Email sent directly to Phoul
-158.255.212.178:8080 orport=8443 id=D941D380E5228E7B4D372AF4D484629A96DC48B9 ipv6=[2a03:f80:ed15:158:255:212:178:2]:8443
-
-# Email sent directly to Phoul
-45.79.108.130:9030 orport=9001 id=AEDAC7081AE14B8D241ECF0FF17A2858AB4383D0 ipv6=[2600:3c01:e000:131::8000:0]:9001
-
-# Email sent directly to Phoul
-51.254.147.57:80 orport=443 id=EB80A8D52F07238B576C42CEAB98ADD084EE075E
-217.182.51.248:80 orport=443 id=D6BA940D3255AB40DC5EE5B0B285FA143E1F9865
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-June/015541.html
-195.191.81.7:9030 orport=9001 id=41A3C16269C7B63DB6EB741DBDDB4E1F586B1592 ipv6=[2a00:1908:fffc:ffff:c0a6:ccff:fe62:e1a1]:9001
-51.254.96.208:9030 orport=9001 id=8101421BEFCCF4C271D5483C5AABCAAD245BBB9D ipv6=[2001:41d0:401:3100::30dc]:9001
-163.172.154.162:9030 orport=9001 id=F741E5124CB12700DA946B78C9B2DD175D6CD2A1 ipv6=[2001:bc8:4400:2100::17:419]:9001
-51.15.78.0:9030 orport=9001 id=15BE17C99FACE24470D40AF782D6A9C692AB36D6 ipv6=[2001:bc8:4700:2300::16:c0b]:9001
-54.37.139.118:9030 orport=9001 id=90A5D1355C4B5840E950EB61E673863A6AE3ACA1 ipv6=[2001:41d0:601:1100::1b8]:9001
-51.38.65.160:9030 orport=9001 id=3CB4193EF4E239FCEDC4DC43468E0B0D6B67ACC3 ipv6=[2001:41d0:801:2000::f6e]:9001
-
-# Email sent directly to Phoul
-54.37.138.138:8080 orport=993 id=1576BE143D8727745BB2BCDDF183291B3C3EFEFC
-
-# Email sent directly to Phoul
-67.215.255.140:9030 orport=9001 id=23917BB3F3994BC61F0C9D7AD19B069F9E150D26
-
-# Email sent directly to Phoul
-195.154.105.170:9030 orport=9001 id=E947C029087FA1C3499BEF5D4372947C51223D8F
-
-# Email sent directly to Phoul
-23.129.64.101:80 orport=443 id=2EB20285FE55927B7AECC47BB94F22534FBC3941 ipv6=[2620:18c:0:1001::101]:443
-23.129.64.102:80 orport=443 id=CA9739E2805A3CD73CF75BBCB6785C32394240E3 ipv6=[2620:18c:0:1001::102]:443
-23.129.64.103:80 orport=443 id=8ED84B53BD9556CCBB036073A1AD508EC27CBE52 ipv6=[2620:18c:0:1001::103]:443
-
-# Email sent directly to Phoul
-37.139.8.104:9030 orport=9001 id=7088D485934E8A403B81531F8C90BDC75FA43C98 ipv6=[2a03:b0c0:0:1010::24c:1001]:9001
-
-# Email sent directly to Phoul
-178.254.7.88:9030 orpport=9001 id=85A885433E50B1874F11CEC9BE98451E24660976
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-August/015869.html
-5.45.111.149:80 orport=443 id=D405FCCF06ADEDF898DF2F29C9348DCB623031BA ipv6=[2a03:4000:6:2388:df98:15f9:b34d:443]:443
-
-# https://trac.torproject.org/projects/tor/ticket/27297
-37.252.185.182:9030 orport=8080 id=113143469021882C3A4B82F084F8125B08EE471E ipv6=[2a00:63c1:a:182::2]:8080
-
-# Email sent directly to Phoul
-139.99.130.178:80 orport=443 id=867B95CACD64653FEEC4D2CEFC5C49B4620307A7
-
-# Email sent directly to Phoul
-104.131.11.214:9030 orport=8080 id=32828476F4F84E15C42B4C360A5CD8DE4C3C2BE7
-
-# Email sent directly to Phoul / Teor
-178.175.139.122:80 orport=443 id=490FB3FAAF8837407D94CA7E1DEF025DEF0F3516 ipv6=[2a00:1dc0:3002::3]:443
-
-# Email sent directly to Phoul
-192.42.116.16:80 orport=443 id=81B75D534F91BFB7C57AB67DA10BCEF622582AE8
-
-# https://lists.torproject.org/pipermail/tor-relays/2018-November/016610.html
-24.117.194.80:80 orport=443 id=B6C4C9A43658F686F8892CA5666717532F72979C
diff --git a/scripts/maint/format_changelog.py b/scripts/maint/format_changelog.py
index 98fbbfb516..08b2155fa3 100755
--- a/scripts/maint/format_changelog.py
+++ b/scripts/maint/format_changelog.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright (c) 2014-2018, The Tor Project, Inc.
+# Copyright (c) 2014-2019, The Tor Project, Inc.
# See LICENSE for licensing information
#
# This script reformats a section of the changelog to wrap everything to
@@ -401,7 +401,7 @@ class ChangeLog(object):
self.dumpEndOfChangelog()
# Let's turn bugs to html.
-BUG_PAT = re.compile('(bug|ticket|feature)\s+(\d{4,5})', re.I)
+BUG_PAT = re.compile('(bug|ticket|issue|feature)\s+(\d{4,5})', re.I)
def bug_html(m):
return "%s <a href='https://bugs.torproject.org/%s'>%s</a>" % (m.group(1), m.group(2), m.group(2))
diff --git a/scripts/maint/generateFallbackDirLine.py b/scripts/maint/generateFallbackDirLine.py
deleted file mode 100755
index b856c938bf..0000000000
--- a/scripts/maint/generateFallbackDirLine.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-
-# Generate a fallback directory whitelist/blacklist line for every fingerprint
-# passed as an argument.
-#
-# Usage:
-# generateFallbackDirLine.py fingerprint ...
-
-import sys
-import urllib2
-
-import stem.descriptor.remote
-import stem.util.tor_tools
-
-if len(sys.argv) <= 1:
- print('Usage: %s fingerprint ...' % sys.argv[0])
- sys.exit(1)
-
-for fingerprint in sys.argv[1:]:
- if not stem.util.tor_tools.is_valid_fingerprint(fingerprint):
- print("'%s' isn't a valid relay fingerprint" % fingerprint)
- sys.exit(1)
-
- try:
- desc = stem.descriptor.remote.get_server_descriptors(fingerprint).run()[0]
- except urllib2.HTTPError as exc:
- if exc.code == 404:
- print('# %s not found in recent descriptors' % fingerprint)
- continue
- else:
- raise
-
- if not desc.dir_port:
- print("# %s needs a DirPort" % fingerprint)
- else:
- ipv6_addresses = [(address, port) for address, port, is_ipv6 in desc.or_addresses if is_ipv6]
- ipv6_field = ' ipv6=[%s]:%s' % ipv6_addresses[0] if ipv6_addresses else ''
- print('%s:%s orport=%s id=%s%s # %s' % (desc.address, desc.dir_port, desc.or_port, fingerprint, ipv6_field, desc.nickname))
diff --git a/scripts/maint/lintChanges.py b/scripts/maint/lintChanges.py
index d5b8fcae5c..82c118f07e 100755
--- a/scripts/maint/lintChanges.py
+++ b/scripts/maint/lintChanges.py
@@ -35,6 +35,36 @@ NEEDS_SUBCATEGORIES = set([
"Major features",
])
+def split_tor_version(version):
+ '''
+ Return the initial numeric components of the Tor version as a list of ints.
+ For versions earlier than 0.1.0, returns MAJOR, MINOR, and MICRO.
+ For versions 0.1.0 and later, returns MAJOR, MINOR, MICRO, and PATCHLEVEL if present.
+
+ If the version is malformed, returns None.
+ '''
+ version_match = re.match('([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?', version)
+ if version_match is None:
+ return None
+
+ version_groups = version_match.groups()
+ if version_groups is None:
+ return None
+ if len(version_groups) < 3:
+ return None
+
+ if len(version_groups) != 5:
+ return None
+ version_components = version_groups[0:3]
+ version_components += version_groups[4:5]
+
+ try:
+ version_list = [int(v) for v in version_components if v is not None]
+ except ValueError:
+ return None
+
+ return version_list
+
def lintfile(fname):
have_warned = []
@@ -87,6 +117,32 @@ def lintfile(fname):
warn("Bugfix does not say 'Fixes bug X; bugfix on Y'")
elif re.search('tor-([0-9]+)', contents):
warn("Do not prefix versions with 'tor-'. ('0.1.2', not 'tor-0.1.2'.)")
+ else:
+ bugfix_match = re.search('bugfix on ([0-9]+\.[0-9]+\.[0-9]+)', contents)
+ if bugfix_match is None:
+ warn("Versions must have at least 3 digits. ('0.1.2', '0.3.4.8', or '0.3.5.1-alpha'.)")
+ elif bugfix_match.group(0) is None:
+ warn("Versions must have at least 3 digits. ('0.1.2', '0.3.4.8', or '0.3.5.1-alpha'.)")
+ else:
+ bugfix_match = re.search('bugfix on ([0-9a-z][-.0-9a-z]+[0-9a-z])', contents)
+ bugfix_group = bugfix_match.groups() if bugfix_match is not None else None
+ bugfix_version = bugfix_group[0] if bugfix_group is not None else None
+ package_version = os.environ.get('PACKAGE_VERSION', None)
+ if bugfix_version is None:
+ # This should be unreachable, unless the patterns are out of sync
+ warn("Malformed bugfix version.")
+ elif package_version is not None:
+ # If $PACKAGE_VERSION isn't set, skip this check
+ bugfix_split = split_tor_version(bugfix_version)
+ package_split = split_tor_version(package_version)
+ if bugfix_split is None:
+ # This should be unreachable, unless the patterns are out of sync
+ warn("Malformed bugfix version: '{}'.".format(bugfix_version))
+ elif package_split is None:
+ # This should be unreachable, unless the patterns are out of sync, or the package versioning scheme has changed
+ warn("Malformed $PACKAGE_VERSION: '{}'.".format(package_version))
+ elif bugfix_split > package_split:
+ warn("Bugfixes must be made on earlier versions (or this version). (Bugfix on version: '{}', current tor package version: '{}'.)".format(bugfix_version, package_version))
return have_warned != []
diff --git a/scripts/maint/lookupFallbackDirContact.py b/scripts/maint/lookupFallbackDirContact.py
deleted file mode 100755
index 14c53d1282..0000000000
--- a/scripts/maint/lookupFallbackDirContact.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env python
-
-# Lookup fallback directory contact lines for every fingerprint passed as an
-# argument.
-#
-# Usage:
-# lookupFallbackDirContact.py fingerprint ...
-
-import sys
-
-import stem.descriptor.remote as remote
-
-if len(sys.argv) <= 1:
- print "Usage: {} fingerprint ...".format(sys.argv[0])
- sys.exit(-1)
-
-# we need descriptors, because the consensus does not have contact infos
-descriptor_list = remote.get_server_descriptors(fingerprints=sys.argv[1:]).run()
-
-descriptor_list_fingerprints = []
-for d in descriptor_list:
- assert d.fingerprint in sys.argv[1:]
- descriptor_list_fingerprints.append(d.fingerprint)
- print "{} {}".format(d.fingerprint, d.contact)
-
-for fingerprint in sys.argv[1:]:
- if fingerprint not in descriptor_list_fingerprints:
- print "{} not found in current descriptors".format(fingerprint)
diff --git a/scripts/maint/pre-commit.git-hook b/scripts/maint/pre-commit.git-hook
new file mode 100755
index 0000000000..b4c4ce2061
--- /dev/null
+++ b/scripts/maint/pre-commit.git-hook
@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# To install this script, copy it to .git/hooks/pre-commit in local copy of
+# tor git repo and make sure it has permission to execute.
+#
+# This is pre-commit git hook script that prevents commiting your changeset if
+# it fails our code formatting or changelog entry formatting checkers.
+
+workdir=$(git rev-parse --show-toplevel)
+
+cd "$workdir" || exit 1
+
+python scripts/maint/lintChanges.py ./changes/*
+
+perl scripts/maint/checkSpace.pl -C \
+src/lib/*/*.[ch] \
+src/core/*/*.[ch] \
+src/feature/*/*.[ch] \
+src/app/*/*.[ch] \
+src/test/*.[ch] \
+src/test/*/*.[ch] \
+src/tools/*.[ch]
+
+if test -e scripts/maint/checkIncludes.py; then
+ python scripts/maint/checkIncludes.py
+fi
diff --git a/scripts/maint/redox.py b/scripts/maint/redox.py
index e8b2622ab9..203cce0107 100755
--- a/scripts/maint/redox.py
+++ b/scripts/maint/redox.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
#
-# Copyright (c) 2008-2018, The Tor Project, Inc.
+# Copyright (c) 2008-2019, The Tor Project, Inc.
# See LICENSE for licensing information.
#
# Hi!
diff --git a/scripts/maint/sortChanges.py b/scripts/maint/sortChanges.py
index c85e6563b8..986b94b025 100755
--- a/scripts/maint/sortChanges.py
+++ b/scripts/maint/sortChanges.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright (c) 2014-2018, The Tor Project, Inc.
+# Copyright (c) 2014-2019, The Tor Project, Inc.
# See LICENSE for licensing information
"""This script sorts a bunch of changes files listed on its command
diff --git a/scripts/maint/updateCopyright.pl b/scripts/maint/updateCopyright.pl
index bd24377d38..36894b1baf 100755
--- a/scripts/maint/updateCopyright.pl
+++ b/scripts/maint/updateCopyright.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl -i -w -p
-$NEWYEAR=2018;
+$NEWYEAR=2019;
-s/Copyright(.*) (201[^8]), The Tor Project/Copyright$1 $2-${NEWYEAR}, The Tor Project/;
+s/Copyright(.*) (201[^9]), The Tor Project/Copyright$1 $2-${NEWYEAR}, The Tor Project/;
s/Copyright(.*)-(20..), The Tor Project/Copyright$1-${NEWYEAR}, The Tor Project/;
diff --git a/scripts/maint/updateFallbackDirs.py b/scripts/maint/updateFallbackDirs.py
deleted file mode 100755
index 14372d0e83..0000000000
--- a/scripts/maint/updateFallbackDirs.py
+++ /dev/null
@@ -1,2364 +0,0 @@
-#!/usr/bin/env python
-
-# Usage:
-#
-# Regenerate the list:
-# scripts/maint/updateFallbackDirs.py > src/app/config/fallback_dirs.inc 2> fallback_dirs.log
-#
-# Check the existing list:
-# scripts/maint/updateFallbackDirs.py check_existing > fallback_dirs.inc.ok 2> fallback_dirs.log
-# mv fallback_dirs.inc.ok src/app/config/fallback_dirs.inc
-#
-# This script should be run from a stable, reliable network connection,
-# with no other network activity (and not over tor).
-# If this is not possible, please disable:
-# PERFORM_IPV4_DIRPORT_CHECKS and PERFORM_IPV6_DIRPORT_CHECKS
-#
-# Needs dateutil, stem, and potentially other python packages.
-# Optionally uses ipaddress (python 3 builtin) or py2-ipaddress (package)
-# for netblock analysis.
-#
-# After running this script, read the logs to make sure the fallbacks aren't
-# dominated by a single netblock or port.
-
-# Script by weasel, April 2015
-# Portions by gsathya & karsten, 2013
-# https://trac.torproject.org/projects/tor/attachment/ticket/8374/dir_list.2.py
-# Modifications by teor, 2015
-
-import StringIO
-import string
-import re
-import datetime
-import gzip
-import os.path
-import json
-import math
-import sys
-import urllib
-import urllib2
-import hashlib
-import dateutil.parser
-import copy
-import re
-
-from stem.descriptor import DocumentHandler
-from stem.descriptor.remote import get_consensus, get_server_descriptors, MAX_FINGERPRINTS
-
-import logging
-logging.root.name = ''
-
-HAVE_IPADDRESS = False
-try:
- # python 3 builtin, or install package py2-ipaddress
- # there are several ipaddress implementations for python 2
- # with slightly different semantics with str typed text
- # fortunately, all our IP addresses are in unicode
- import ipaddress
- HAVE_IPADDRESS = True
-except ImportError:
- # if this happens, we avoid doing netblock analysis
- logging.warning('Unable to import ipaddress, please install py2-ipaddress.' +
- ' A fallback list will be created, but optional netblock' +
- ' analysis will not be performed.')
-
-## Top-Level Configuration
-
-# We use semantic versioning: https://semver.org
-# In particular:
-# * major changes include removing a mandatory field, or anything else that
-# would break an appropriately tolerant parser,
-# * minor changes include adding a field,
-# * patch changes include changing header comments or other unstructured
-# content
-FALLBACK_FORMAT_VERSION = '2.0.0'
-SECTION_SEPARATOR_BASE = '====='
-SECTION_SEPARATOR_COMMENT = '/* ' + SECTION_SEPARATOR_BASE + ' */'
-
-# Output all candidate fallbacks, or only output selected fallbacks?
-OUTPUT_CANDIDATES = False
-
-# Perform DirPort checks over IPv4?
-# Change this to False if IPv4 doesn't work for you, or if you don't want to
-# download a consensus for each fallback
-# Don't check ~1000 candidates when OUTPUT_CANDIDATES is True
-PERFORM_IPV4_DIRPORT_CHECKS = False if OUTPUT_CANDIDATES else True
-
-# Perform DirPort checks over IPv6?
-# If you know IPv6 works for you, set this to True
-# This will exclude IPv6 relays without an IPv6 DirPort configured
-# So it's best left at False until #18394 is implemented
-# Don't check ~1000 candidates when OUTPUT_CANDIDATES is True
-PERFORM_IPV6_DIRPORT_CHECKS = False if OUTPUT_CANDIDATES else False
-
-# Must relays be running now?
-MUST_BE_RUNNING_NOW = (PERFORM_IPV4_DIRPORT_CHECKS
- or PERFORM_IPV6_DIRPORT_CHECKS)
-
-# Clients have been using microdesc consensuses by default for a while now
-DOWNLOAD_MICRODESC_CONSENSUS = True
-
-# If a relay delivers an invalid consensus, if it will become valid less than
-# this many seconds in the future, or expired less than this many seconds ago,
-# accept the relay as a fallback. For the consensus expiry check to be
-# accurate, the machine running this script needs an accurate clock.
-#
-# Relays on 0.3.0 and later return a 404 when they are about to serve a
-# consensus that expired more than 24 hours ago. 0.2.9 and earlier relays
-# will serve consensuses that are very old.
-#
-# Relays on 0.3.5.6-rc? and later return a 404 when they are about to serve a
-# consensus that will become valid more than 24 hours in the future. Older
-# relays don't serve future consensuses.
-#
-# A 404 makes relays fail the download check. We use a tolerance of 24 hours,
-# so that 0.2.9 relays also fail the download check if they serve a consensus
-# that is not reasonably live.
-#
-# REASONABLY_LIVE_TIME should never be more than Tor's REASONABLY_LIVE_TIME,
-# (24 hours), because clients reject consensuses that are older than that.
-# Clients on 0.3.5.5-alpha? and earlier also won't select guards from
-# consensuses that have expired, but can bootstrap if they already have guards
-# in their state file.
-REASONABLY_LIVE_TIME = 24*60*60
-
-# Output fallback name, flags, bandwidth, and ContactInfo in a C comment?
-OUTPUT_COMMENTS = True if OUTPUT_CANDIDATES else False
-
-# Output matching ContactInfo in fallbacks list?
-# Useful if you're trying to contact operators
-CONTACT_COUNT = True if OUTPUT_CANDIDATES else False
-
-# How the list should be sorted:
-# fingerprint: is useful for stable diffs of fallback lists
-# measured_bandwidth: is useful when pruning the list based on bandwidth
-# contact: is useful for contacting operators once the list has been pruned
-OUTPUT_SORT_FIELD = 'contact' if OUTPUT_CANDIDATES else 'fingerprint'
-
-## OnionOO Settings
-
-ONIONOO = 'https://onionoo.torproject.org/'
-#ONIONOO = 'https://onionoo.thecthulhu.com/'
-
-# Don't bother going out to the Internet, just use the files available locally,
-# even if they're very old
-LOCAL_FILES_ONLY = False
-
-## Whitelist / Blacklist Filter Settings
-
-# The whitelist contains entries that are included if all attributes match
-# (IPv4, dirport, orport, id, and optionally IPv6 and IPv6 orport)
-
-# What happens to entries not in whitelist?
-# When True, they are included, when False, they are excluded
-INCLUDE_UNLISTED_ENTRIES = True if OUTPUT_CANDIDATES else False
-
-WHITELIST_FILE_NAME = 'scripts/maint/fallback.whitelist'
-FALLBACK_FILE_NAME = 'src/app/config/fallback_dirs.inc'
-
-# The number of bytes we'll read from a filter file before giving up
-MAX_LIST_FILE_SIZE = 1024 * 1024
-
-## Eligibility Settings
-
-# Require fallbacks to have the same address and port for a set amount of time
-# We used to have this at 1 week, but that caused many fallback failures, which
-# meant that we had to rebuild the list more often. We want fallbacks to be
-# stable for 2 years, so we set it to a few months.
-#
-# If a relay changes address or port, that's it, it's not useful any more,
-# because clients can't find it
-ADDRESS_AND_PORT_STABLE_DAYS = 90
-# We ignore relays that have been down for more than this period
-MAX_DOWNTIME_DAYS = 0 if MUST_BE_RUNNING_NOW else 7
-# FallbackDirs must have a time-weighted-fraction that is greater than or
-# equal to:
-# Mirrors that are down half the time are still useful half the time
-CUTOFF_RUNNING = .50
-CUTOFF_V2DIR = .50
-# Guard flags are removed for some time after a relay restarts, so we ignore
-# the guard flag.
-CUTOFF_GUARD = .00
-# FallbackDirs must have a time-weighted-fraction that is less than or equal
-# to:
-# .00 means no bad exits
-PERMITTED_BADEXIT = .00
-
-# older entries' weights are adjusted with ALPHA^(age in days)
-AGE_ALPHA = 0.99
-
-# this factor is used to scale OnionOO entries to [0,1]
-ONIONOO_SCALE_ONE = 999.
-
-## Fallback Count Limits
-
-# The target for these parameters is 20% of the guards in the network
-# This is around 200 as of October 2015
-_FB_POG = 0.2
-FALLBACK_PROPORTION_OF_GUARDS = None if OUTPUT_CANDIDATES else _FB_POG
-
-# Limit the number of fallbacks (eliminating lowest by advertised bandwidth)
-MAX_FALLBACK_COUNT = None if OUTPUT_CANDIDATES else 200
-# Emit a C #error if the number of fallbacks is less than expected
-MIN_FALLBACK_COUNT = 0 if OUTPUT_CANDIDATES else MAX_FALLBACK_COUNT*0.5
-
-# The maximum number of fallbacks on the same address, contact, or family
-#
-# With 150 fallbacks, this means each operator sees 5% of client bootstraps.
-# For comparison:
-# - We try to limit guard and exit operators to 5% of the network
-# - The directory authorities used to see 11% of client bootstraps each
-#
-# We also don't want too much of the list to go down if a single operator
-# has to move all their relays.
-MAX_FALLBACKS_PER_IP = 1
-MAX_FALLBACKS_PER_IPV4 = MAX_FALLBACKS_PER_IP
-MAX_FALLBACKS_PER_IPV6 = MAX_FALLBACKS_PER_IP
-MAX_FALLBACKS_PER_CONTACT = 7
-MAX_FALLBACKS_PER_FAMILY = 7
-
-## Fallback Bandwidth Requirements
-
-# Any fallback with the Exit flag has its bandwidth multiplied by this fraction
-# to make sure we aren't further overloading exits
-# (Set to 1.0, because we asked that only lightly loaded exits opt-in,
-# and the extra load really isn't that much for large relays.)
-EXIT_BANDWIDTH_FRACTION = 1.0
-
-# If a single fallback's bandwidth is too low, it's pointless adding it
-# We expect fallbacks to handle an extra 10 kilobytes per second of traffic
-# Make sure they can support fifty times the expected extra load
-#
-# We convert this to a consensus weight before applying the filter,
-# because all the bandwidth amounts are specified by the relay
-MIN_BANDWIDTH = 50.0 * 10.0 * 1024.0
-
-# Clients will time out after 30 seconds trying to download a consensus
-# So allow fallback directories half that to deliver a consensus
-# The exact download times might change based on the network connection
-# running this script, but only by a few seconds
-# There is also about a second of python overhead
-CONSENSUS_DOWNLOAD_SPEED_MAX = 15.0
-# If the relay fails a consensus check, retry the download
-# This avoids delisting a relay due to transient network conditions
-CONSENSUS_DOWNLOAD_RETRY = True
-
-## Parsing Functions
-
-def parse_ts(t):
- return datetime.datetime.strptime(t, "%Y-%m-%d %H:%M:%S")
-
-def remove_bad_chars(raw_string, bad_char_list):
- # Remove each character in the bad_char_list
- cleansed_string = raw_string
- for c in bad_char_list:
- cleansed_string = cleansed_string.replace(c, '')
- return cleansed_string
-
-def cleanse_unprintable(raw_string):
- # Remove all unprintable characters
- cleansed_string = ''
- for c in raw_string:
- if c in string.printable:
- cleansed_string += c
- return cleansed_string
-
-def cleanse_whitespace(raw_string):
- # Replace all whitespace characters with a space
- cleansed_string = raw_string
- for c in string.whitespace:
- cleansed_string = cleansed_string.replace(c, ' ')
- return cleansed_string
-
-def cleanse_c_multiline_comment(raw_string):
- cleansed_string = raw_string
- # Embedded newlines should be removed by tor/onionoo, but let's be paranoid
- cleansed_string = cleanse_whitespace(cleansed_string)
- # ContactInfo and Version can be arbitrary binary data
- cleansed_string = cleanse_unprintable(cleansed_string)
- # Prevent a malicious / unanticipated string from breaking out
- # of a C-style multiline comment
- # This removes '/*' and '*/' and '//'
- bad_char_list = '*/'
- # Prevent a malicious string from using C nulls
- bad_char_list += '\0'
- # Avoid confusing parsers by making sure there is only one comma per fallback
- bad_char_list += ','
- # Avoid confusing parsers by making sure there is only one equals per field
- bad_char_list += '='
- # Be safer by removing bad characters entirely
- cleansed_string = remove_bad_chars(cleansed_string, bad_char_list)
- # Some compilers may further process the content of comments
- # There isn't much we can do to cover every possible case
- # But comment-based directives are typically only advisory
- return cleansed_string
-
-def cleanse_c_string(raw_string):
- cleansed_string = raw_string
- # Embedded newlines should be removed by tor/onionoo, but let's be paranoid
- cleansed_string = cleanse_whitespace(cleansed_string)
- # ContactInfo and Version can be arbitrary binary data
- cleansed_string = cleanse_unprintable(cleansed_string)
- # Prevent a malicious address/fingerprint string from breaking out
- # of a C-style string
- bad_char_list = '"'
- # Prevent a malicious string from using escapes
- bad_char_list += '\\'
- # Prevent a malicious string from using C nulls
- bad_char_list += '\0'
- # Avoid confusing parsers by making sure there is only one comma per fallback
- bad_char_list += ','
- # Avoid confusing parsers by making sure there is only one equals per field
- bad_char_list += '='
- # Be safer by removing bad characters entirely
- cleansed_string = remove_bad_chars(cleansed_string, bad_char_list)
- # Some compilers may further process the content of strings
- # There isn't much we can do to cover every possible case
- # But this typically only results in changes to the string data
- return cleansed_string
-
-## OnionOO Source Functions
-
-# a dictionary of source metadata for each onionoo query we've made
-fetch_source = {}
-
-# register source metadata for 'what'
-# assumes we only retrieve one document for each 'what'
-def register_fetch_source(what, url, relays_published, version):
- fetch_source[what] = {}
- fetch_source[what]['url'] = url
- fetch_source[what]['relays_published'] = relays_published
- fetch_source[what]['version'] = version
-
-# list each registered source's 'what'
-def fetch_source_list():
- return sorted(fetch_source.keys())
-
-# given 'what', provide a multiline C comment describing the source
-def describe_fetch_source(what):
- desc = '/*'
- desc += '\n'
- desc += 'Onionoo Source: '
- desc += cleanse_c_multiline_comment(what)
- desc += ' Date: '
- desc += cleanse_c_multiline_comment(fetch_source[what]['relays_published'])
- desc += ' Version: '
- desc += cleanse_c_multiline_comment(fetch_source[what]['version'])
- desc += '\n'
- desc += 'URL: '
- desc += cleanse_c_multiline_comment(fetch_source[what]['url'])
- desc += '\n'
- desc += '*/'
- return desc
-
-## File Processing Functions
-
-def write_to_file(str, file_name, max_len):
- try:
- with open(file_name, 'w') as f:
- f.write(str[0:max_len])
- except EnvironmentError, error:
- logging.error('Writing file %s failed: %d: %s'%
- (file_name,
- error.errno,
- error.strerror)
- )
-
-def read_from_file(file_name, max_len):
- try:
- if os.path.isfile(file_name):
- with open(file_name, 'r') as f:
- return f.read(max_len)
- except EnvironmentError, error:
- logging.info('Loading file %s failed: %d: %s'%
- (file_name,
- error.errno,
- error.strerror)
- )
- return None
-
-def parse_fallback_file(file_name):
- file_data = read_from_file(file_name, MAX_LIST_FILE_SIZE)
- file_data = cleanse_unprintable(file_data)
- file_data = remove_bad_chars(file_data, '\n"\0')
- file_data = re.sub('/\*.*?\*/', '', file_data)
- file_data = file_data.replace(',', '\n')
- file_data = file_data.replace(' weight=10', '')
- return file_data
-
-def load_possibly_compressed_response_json(response):
- if response.info().get('Content-Encoding') == 'gzip':
- buf = StringIO.StringIO( response.read() )
- f = gzip.GzipFile(fileobj=buf)
- return json.load(f)
- else:
- return json.load(response)
-
-def load_json_from_file(json_file_name):
- # An exception here may be resolved by deleting the .last_modified
- # and .json files, and re-running the script
- try:
- with open(json_file_name, 'r') as f:
- return json.load(f)
- except EnvironmentError, error:
- raise Exception('Reading not-modified json file %s failed: %d: %s'%
- (json_file_name,
- error.errno,
- error.strerror)
- )
-
-## OnionOO Functions
-
-def datestr_to_datetime(datestr):
- # Parse datetimes like: Fri, 02 Oct 2015 13:34:14 GMT
- if datestr is not None:
- dt = dateutil.parser.parse(datestr)
- else:
- # Never modified - use start of epoch
- dt = datetime.datetime.utcfromtimestamp(0)
- # strip any timezone out (in case they're supported in future)
- dt = dt.replace(tzinfo=None)
- return dt
-
-def onionoo_fetch(what, **kwargs):
- params = kwargs
- params['type'] = 'relay'
- #params['limit'] = 10
- params['first_seen_days'] = '%d-'%(ADDRESS_AND_PORT_STABLE_DAYS)
- params['last_seen_days'] = '-%d'%(MAX_DOWNTIME_DAYS)
- params['flag'] = 'V2Dir'
- url = ONIONOO + what + '?' + urllib.urlencode(params)
-
- # Unfortunately, the URL is too long for some OS filenames,
- # but we still don't want to get files from different URLs mixed up
- base_file_name = what + '-' + hashlib.sha1(url).hexdigest()
-
- full_url_file_name = base_file_name + '.full_url'
- MAX_FULL_URL_LENGTH = 1024
-
- last_modified_file_name = base_file_name + '.last_modified'
- MAX_LAST_MODIFIED_LENGTH = 64
-
- json_file_name = base_file_name + '.json'
-
- if LOCAL_FILES_ONLY:
- # Read from the local file, don't write to anything
- response_json = load_json_from_file(json_file_name)
- else:
- # store the full URL to a file for debugging
- # no need to compare as long as you trust SHA-1
- write_to_file(url, full_url_file_name, MAX_FULL_URL_LENGTH)
-
- request = urllib2.Request(url)
- request.add_header('Accept-encoding', 'gzip')
-
- # load the last modified date from the file, if it exists
- last_mod_date = read_from_file(last_modified_file_name,
- MAX_LAST_MODIFIED_LENGTH)
- if last_mod_date is not None:
- request.add_header('If-modified-since', last_mod_date)
-
- # Parse last modified date
- last_mod = datestr_to_datetime(last_mod_date)
-
- # Not Modified and still recent enough to be useful
- # Onionoo / Globe used to use 6 hours, but we can afford a day
- required_freshness = datetime.datetime.utcnow()
- # strip any timezone out (to match dateutil.parser)
- required_freshness = required_freshness.replace(tzinfo=None)
- required_freshness -= datetime.timedelta(hours=24)
-
- # Make the OnionOO request
- response_code = 0
- try:
- response = urllib2.urlopen(request)
- response_code = response.getcode()
- except urllib2.HTTPError, error:
- response_code = error.code
- if response_code == 304: # not modified
- pass
- else:
- raise Exception("Could not get " + url + ": "
- + str(error.code) + ": " + error.reason)
-
- if response_code == 200: # OK
- last_mod = datestr_to_datetime(response.info().get('Last-Modified'))
-
- # Check for freshness
- if last_mod < required_freshness:
- if last_mod_date is not None:
- # This check sometimes fails transiently, retry the script if it does
- date_message = "Outdated data: last updated " + last_mod_date
- else:
- date_message = "No data: never downloaded "
- raise Exception(date_message + " from " + url)
-
- # Process the data
- if response_code == 200: # OK
-
- response_json = load_possibly_compressed_response_json(response)
-
- with open(json_file_name, 'w') as f:
- # use the most compact json representation to save space
- json.dump(response_json, f, separators=(',',':'))
-
- # store the last modified date in its own file
- if response.info().get('Last-modified') is not None:
- write_to_file(response.info().get('Last-Modified'),
- last_modified_file_name,
- MAX_LAST_MODIFIED_LENGTH)
-
- elif response_code == 304: # Not Modified
-
- response_json = load_json_from_file(json_file_name)
-
- else: # Unexpected HTTP response code not covered in the HTTPError above
- raise Exception("Unexpected HTTP response code to " + url + ": "
- + str(response_code))
-
- register_fetch_source(what,
- url,
- response_json['relays_published'],
- response_json['version'])
-
- return response_json
-
-def fetch(what, **kwargs):
- #x = onionoo_fetch(what, **kwargs)
- # don't use sort_keys, as the order of or_addresses is significant
- #print json.dumps(x, indent=4, separators=(',', ': '))
- #sys.exit(0)
-
- return onionoo_fetch(what, **kwargs)
-
-## Fallback Candidate Class
-
-class Candidate(object):
- CUTOFF_ADDRESS_AND_PORT_STABLE = (datetime.datetime.utcnow()
- - datetime.timedelta(ADDRESS_AND_PORT_STABLE_DAYS))
-
- def __init__(self, details):
- for f in ['fingerprint', 'nickname', 'last_changed_address_or_port',
- 'consensus_weight', 'or_addresses', 'dir_address']:
- if not f in details: raise Exception("Document has no %s field."%(f,))
-
- if not 'contact' in details:
- details['contact'] = None
- if not 'flags' in details or details['flags'] is None:
- details['flags'] = []
- if (not 'advertised_bandwidth' in details
- or details['advertised_bandwidth'] is None):
- # relays without advertised bandwidth have it calculated from their
- # consensus weight
- details['advertised_bandwidth'] = 0
- if (not 'effective_family' in details
- or details['effective_family'] is None):
- details['effective_family'] = []
- if not 'platform' in details:
- details['platform'] = None
- details['last_changed_address_or_port'] = parse_ts(
- details['last_changed_address_or_port'])
- self._data = details
- self._stable_sort_or_addresses()
-
- self._fpr = self._data['fingerprint']
- self._running = self._guard = self._v2dir = 0.
- self._split_dirport()
- self._compute_orport()
- if self.orport is None:
- raise Exception("Failed to get an orport for %s."%(self._fpr,))
- self._compute_ipv6addr()
- if not self.has_ipv6():
- logging.debug("Failed to get an ipv6 address for %s."%(self._fpr,))
- self._compute_version()
- self._extra_info_cache = None
-
- def _stable_sort_or_addresses(self):
- # replace self._data['or_addresses'] with a stable ordering,
- # sorting the secondary addresses in string order
- # leave the received order in self._data['or_addresses_raw']
- self._data['or_addresses_raw'] = self._data['or_addresses']
- or_address_primary = self._data['or_addresses'][:1]
- # subsequent entries in the or_addresses array are in an arbitrary order
- # so we stabilise the addresses by sorting them in string order
- or_addresses_secondaries_stable = sorted(self._data['or_addresses'][1:])
- or_addresses_stable = or_address_primary + or_addresses_secondaries_stable
- self._data['or_addresses'] = or_addresses_stable
-
- def get_fingerprint(self):
- return self._fpr
-
- # is_valid_ipv[46]_address by gsathya, karsten, 2013
- @staticmethod
- def is_valid_ipv4_address(address):
- if not isinstance(address, (str, unicode)):
- return False
-
- # check if there are four period separated values
- if address.count(".") != 3:
- return False
-
- # checks that each value in the octet are decimal values between 0-255
- for entry in address.split("."):
- if not entry.isdigit() or int(entry) < 0 or int(entry) > 255:
- return False
- elif entry[0] == "0" and len(entry) > 1:
- return False # leading zeros, for instance in "1.2.3.001"
-
- return True
-
- @staticmethod
- def is_valid_ipv6_address(address):
- if not isinstance(address, (str, unicode)):
- return False
-
- # remove brackets
- address = address[1:-1]
-
- # addresses are made up of eight colon separated groups of four hex digits
- # with leading zeros being optional
- # https://en.wikipedia.org/wiki/IPv6#Address_format
-
- colon_count = address.count(":")
-
- if colon_count > 7:
- return False # too many groups
- elif colon_count != 7 and not "::" in address:
- return False # not enough groups and none are collapsed
- elif address.count("::") > 1 or ":::" in address:
- return False # multiple groupings of zeros can't be collapsed
-
- found_ipv4_on_previous_entry = False
- for entry in address.split(":"):
- # If an IPv6 address has an embedded IPv4 address,
- # it must be the last entry
- if found_ipv4_on_previous_entry:
- return False
- if not re.match("^[0-9a-fA-f]{0,4}$", entry):
- if not Candidate.is_valid_ipv4_address(entry):
- return False
- else:
- found_ipv4_on_previous_entry = True
-
- return True
-
- def _split_dirport(self):
- # Split the dir_address into dirip and dirport
- (self.dirip, _dirport) = self._data['dir_address'].split(':', 2)
- self.dirport = int(_dirport)
-
- def _compute_orport(self):
- # Choose the first ORPort that's on the same IPv4 address as the DirPort.
- # In rare circumstances, this might not be the primary ORPort address.
- # However, _stable_sort_or_addresses() ensures we choose the same one
- # every time, even if onionoo changes the order of the secondaries.
- self._split_dirport()
- self.orport = None
- for i in self._data['or_addresses']:
- if i != self._data['or_addresses'][0]:
- logging.debug('Secondary IPv4 Address Used for %s: %s'%(self._fpr, i))
- (ipaddr, port) = i.rsplit(':', 1)
- if (ipaddr == self.dirip) and Candidate.is_valid_ipv4_address(ipaddr):
- self.orport = int(port)
- return
-
- def _compute_ipv6addr(self):
- # Choose the first IPv6 address that uses the same port as the ORPort
- # Or, choose the first IPv6 address in the list
- # _stable_sort_or_addresses() ensures we choose the same IPv6 address
- # every time, even if onionoo changes the order of the secondaries.
- self.ipv6addr = None
- self.ipv6orport = None
- # Choose the first IPv6 address that uses the same port as the ORPort
- for i in self._data['or_addresses']:
- (ipaddr, port) = i.rsplit(':', 1)
- if (port == self.orport) and Candidate.is_valid_ipv6_address(ipaddr):
- self.ipv6addr = ipaddr
- self.ipv6orport = int(port)
- return
- # Choose the first IPv6 address in the list
- for i in self._data['or_addresses']:
- (ipaddr, port) = i.rsplit(':', 1)
- if Candidate.is_valid_ipv6_address(ipaddr):
- self.ipv6addr = ipaddr
- self.ipv6orport = int(port)
- return
-
- def _compute_version(self):
- # parse the version out of the platform string
- # The platform looks like: "Tor 0.2.7.6 on Linux"
- self._data['version'] = None
- if self._data['platform'] is None:
- return
- # be tolerant of weird whitespacing, use a whitespace split
- tokens = self._data['platform'].split()
- for token in tokens:
- vnums = token.split('.')
- # if it's at least a.b.c.d, with potentially an -alpha-dev, -alpha, -rc
- if (len(vnums) >= 4 and vnums[0].isdigit() and vnums[1].isdigit() and
- vnums[2].isdigit()):
- self._data['version'] = token
- return
-
- # From #20509
- # bug #20499 affects versions from 0.2.9.1-alpha-dev to 0.2.9.4-alpha-dev
- # and version 0.3.0.0-alpha-dev
- # Exhaustive lists are hard to get wrong
- STALE_CONSENSUS_VERSIONS = ['0.2.9.1-alpha-dev',
- '0.2.9.2-alpha',
- '0.2.9.2-alpha-dev',
- '0.2.9.3-alpha',
- '0.2.9.3-alpha-dev',
- '0.2.9.4-alpha',
- '0.2.9.4-alpha-dev',
- '0.3.0.0-alpha-dev'
- ]
-
- def is_valid_version(self):
- # call _compute_version before calling this
- # is the version of the relay a version we want as a fallback?
- # checks both recommended versions and bug #20499 / #20509
- #
- # if the relay doesn't have a recommended version field, exclude the relay
- if not self._data.has_key('recommended_version'):
- log_excluded('%s not a candidate: no recommended_version field',
- self._fpr)
- return False
- if not self._data['recommended_version']:
- log_excluded('%s not a candidate: version not recommended', self._fpr)
- return False
- # if the relay doesn't have version field, exclude the relay
- if not self._data.has_key('version'):
- log_excluded('%s not a candidate: no version field', self._fpr)
- return False
- if self._data['version'] in Candidate.STALE_CONSENSUS_VERSIONS:
- logging.warning('%s not a candidate: version delivers stale consensuses',
- self._fpr)
- return False
- return True
-
- @staticmethod
- def _extract_generic_history(history, which='unknown'):
- # given a tree like this:
- # {
- # "1_month": {
- # "count": 187,
- # "factor": 0.001001001001001001,
- # "first": "2015-02-27 06:00:00",
- # "interval": 14400,
- # "last": "2015-03-30 06:00:00",
- # "values": [
- # 999,
- # 999
- # ]
- # },
- # "1_week": {
- # "count": 169,
- # "factor": 0.001001001001001001,
- # "first": "2015-03-23 07:30:00",
- # "interval": 3600,
- # "last": "2015-03-30 07:30:00",
- # "values": [ ...]
- # },
- # "1_year": {
- # "count": 177,
- # "factor": 0.001001001001001001,
- # "first": "2014-04-11 00:00:00",
- # "interval": 172800,
- # "last": "2015-03-29 00:00:00",
- # "values": [ ...]
- # },
- # "3_months": {
- # "count": 185,
- # "factor": 0.001001001001001001,
- # "first": "2014-12-28 06:00:00",
- # "interval": 43200,
- # "last": "2015-03-30 06:00:00",
- # "values": [ ...]
- # }
- # },
- # extract exactly one piece of data per time interval,
- # using smaller intervals where available.
- #
- # returns list of (age, length, value) dictionaries.
-
- generic_history = []
-
- periods = history.keys()
- periods.sort(key = lambda x: history[x]['interval'])
- now = datetime.datetime.utcnow()
- newest = now
- for p in periods:
- h = history[p]
- interval = datetime.timedelta(seconds = h['interval'])
- this_ts = parse_ts(h['last'])
-
- if (len(h['values']) != h['count']):
- logging.warning('Inconsistent value count in %s document for %s'
- %(p, which))
- for v in reversed(h['values']):
- if (this_ts <= newest):
- agt1 = now - this_ts
- agt2 = interval
- agetmp1 = (agt1.microseconds + (agt1.seconds + agt1.days * 24 * 3600)
- * 10**6) / 10**6
- agetmp2 = (agt2.microseconds + (agt2.seconds + agt2.days * 24 * 3600)
- * 10**6) / 10**6
- generic_history.append(
- { 'age': agetmp1,
- 'length': agetmp2,
- 'value': v
- })
- newest = this_ts
- this_ts -= interval
-
- if (this_ts + interval != parse_ts(h['first'])):
- logging.warning('Inconsistent time information in %s document for %s'
- %(p, which))
-
- #print json.dumps(generic_history, sort_keys=True,
- # indent=4, separators=(',', ': '))
- return generic_history
-
- @staticmethod
- def _avg_generic_history(generic_history):
- a = []
- for i in generic_history:
- if i['age'] > (ADDRESS_AND_PORT_STABLE_DAYS * 24 * 3600):
- continue
- if (i['length'] is not None
- and i['age'] is not None
- and i['value'] is not None):
- w = i['length'] * math.pow(AGE_ALPHA, i['age']/(3600*24))
- a.append( (i['value'] * w, w) )
-
- sv = math.fsum(map(lambda x: x[0], a))
- sw = math.fsum(map(lambda x: x[1], a))
-
- if sw == 0.0:
- svw = 0.0
- else:
- svw = sv/sw
- return svw
-
- def _add_generic_history(self, history):
- periods = r['read_history'].keys()
- periods.sort(key = lambda x: r['read_history'][x]['interval'] )
-
- print periods
-
- def add_running_history(self, history):
- pass
-
- def add_uptime(self, uptime):
- logging.debug('Adding uptime %s.'%(self._fpr,))
-
- # flags we care about: Running, V2Dir, Guard
- if not 'flags' in uptime:
- logging.debug('No flags in document for %s.'%(self._fpr,))
- return
-
- for f in ['Running', 'Guard', 'V2Dir']:
- if not f in uptime['flags']:
- logging.debug('No %s in flags for %s.'%(f, self._fpr,))
- return
-
- running = self._extract_generic_history(uptime['flags']['Running'],
- '%s-Running'%(self._fpr))
- guard = self._extract_generic_history(uptime['flags']['Guard'],
- '%s-Guard'%(self._fpr))
- v2dir = self._extract_generic_history(uptime['flags']['V2Dir'],
- '%s-V2Dir'%(self._fpr))
- if 'BadExit' in uptime['flags']:
- badexit = self._extract_generic_history(uptime['flags']['BadExit'],
- '%s-BadExit'%(self._fpr))
-
- self._running = self._avg_generic_history(running) / ONIONOO_SCALE_ONE
- self._guard = self._avg_generic_history(guard) / ONIONOO_SCALE_ONE
- self._v2dir = self._avg_generic_history(v2dir) / ONIONOO_SCALE_ONE
- self._badexit = None
- if 'BadExit' in uptime['flags']:
- self._badexit = self._avg_generic_history(badexit) / ONIONOO_SCALE_ONE
-
- def is_candidate(self):
- try:
- if (MUST_BE_RUNNING_NOW and not self.is_running()):
- log_excluded('%s not a candidate: not running now, unable to check ' +
- 'DirPort consensus download', self._fpr)
- return False
- if (self._data['last_changed_address_or_port'] >
- self.CUTOFF_ADDRESS_AND_PORT_STABLE):
- log_excluded('%s not a candidate: changed address/port recently (%s)',
- self._fpr, self._data['last_changed_address_or_port'])
- return False
- if self._running < CUTOFF_RUNNING:
- log_excluded('%s not a candidate: running avg too low (%lf)',
- self._fpr, self._running)
- return False
- if self._v2dir < CUTOFF_V2DIR:
- log_excluded('%s not a candidate: v2dir avg too low (%lf)',
- self._fpr, self._v2dir)
- return False
- if self._badexit is not None and self._badexit > PERMITTED_BADEXIT:
- log_excluded('%s not a candidate: badexit avg too high (%lf)',
- self._fpr, self._badexit)
- return False
- # this function logs a message depending on which check fails
- if not self.is_valid_version():
- return False
- if self._guard < CUTOFF_GUARD:
- log_excluded('%s not a candidate: guard avg too low (%lf)',
- self._fpr, self._guard)
- return False
- if (not self._data.has_key('consensus_weight')
- or self._data['consensus_weight'] < 1):
- log_excluded('%s not a candidate: consensus weight invalid', self._fpr)
- return False
- except BaseException as e:
- logging.warning("Exception %s when checking if fallback is a candidate",
- str(e))
- return False
- return True
-
- def id_matches(self, id, exact=False):
- """ Does this fallback's id match id?
- exact is ignored. """
- return self._fpr == id
-
- def ipv4_addr_matches(self, ipv4_addr, exact=False):
- """ Does this fallback's IPv4 address match ipv4_addr?
- exact is ignored. """
- return self.dirip == ipv4_addr
-
- def ipv4_dirport_matches(self, ipv4_dirport, exact=False):
- """ Does this fallback's IPv4 dirport match ipv4_dirport?
- If exact is False, always return True. """
- if exact:
- return self.dirport == int(ipv4_dirport)
- else:
- return True
-
- def ipv4_and_dirport_matches(self, ipv4_addr, ipv4_dirport, exact=False):
- """ Does this fallback's IPv4 address match ipv4_addr?
- If exact is True, also check ipv4_dirport. """
- ipv4_match = self.ipv4_addr_matches(ipv4_addr, exact=exact)
- if exact:
- return ipv4_match and self.ipv4_dirport_matches(ipv4_dirport,
- exact=exact)
- else:
- return ipv4_match
-
- def ipv4_orport_matches(self, ipv4_orport, exact=False):
- """ Does this fallback's IPv4 orport match ipv4_orport?
- If exact is False, always return True. """
- if exact:
- return self.orport == int(ipv4_orport)
- else:
- return True
-
- def ipv4_and_orport_matches(self, ipv4_addr, ipv4_orport, exact=False):
- """ Does this fallback's IPv4 address match ipv4_addr?
- If exact is True, also check ipv4_orport. """
- ipv4_match = self.ipv4_addr_matches(ipv4_addr, exact=exact)
- if exact:
- return ipv4_match and self.ipv4_orport_matches(ipv4_orport,
- exact=exact)
- else:
- return ipv4_match
-
- def ipv6_addr_matches(self, ipv6_addr, exact=False):
- """ Does this fallback's IPv6 address match ipv6_addr?
- Both addresses must be present to match.
- exact is ignored. """
- if self.has_ipv6() and ipv6_addr is not None:
- # Check that we have a bracketed IPv6 address without a port
- assert(ipv6_addr.startswith('[') and ipv6_addr.endswith(']'))
- return self.ipv6addr == ipv6_addr
- else:
- return False
-
- def ipv6_orport_matches(self, ipv6_orport, exact=False):
- """ Does this fallback's IPv6 orport match ipv6_orport?
- Both ports must be present to match.
- If exact is False, always return True. """
- if exact:
- return (self.has_ipv6() and ipv6_orport is not None and
- self.ipv6orport == int(ipv6_orport))
- else:
- return True
-
- def ipv6_and_orport_matches(self, ipv6_addr, ipv6_orport, exact=False):
- """ Does this fallback's IPv6 address match ipv6_addr?
- If exact is True, also check ipv6_orport. """
- ipv6_match = self.ipv6_addr_matches(ipv6_addr, exact=exact)
- if exact:
- return ipv6_match and self.ipv6_orport_matches(ipv6_orport,
- exact=exact)
- else:
- return ipv6_match
-
- def entry_matches_exact(self, entry):
- """ Is entry an exact match for this fallback?
- A fallback is an exact match for entry if each key in entry matches:
- ipv4
- dirport
- orport
- id
- ipv6 address and port (if present in the fallback or the whitelist)
- If the fallback has an ipv6 key, the whitelist line must also have
- it, otherwise they don't match.
-
- Logs a warning-level message if the fallback would be an exact match,
- but one of the id, ipv4, ipv4 orport, ipv4 dirport, or ipv6 orport
- have changed. """
- if not self.id_matches(entry['id'], exact=True):
- # can't log here unless we match an IP and port, because every relay's
- # fingerprint is compared to every entry's fingerprint
- if self.ipv4_and_orport_matches(entry['ipv4'],
- entry['orport'],
- exact=True):
- logging.warning('%s excluded: has OR %s:%d changed fingerprint to ' +
- '%s?', entry['id'], self.dirip, self.orport,
- self._fpr)
- if self.ipv6_and_orport_matches(entry.get('ipv6_addr'),
- entry.get('ipv6_orport'),
- exact=True):
- logging.warning('%s excluded: has OR %s changed fingerprint to ' +
- '%s?', entry['id'], entry['ipv6'], self._fpr)
- return False
- if not self.ipv4_addr_matches(entry['ipv4'], exact=True):
- logging.warning('%s excluded: has it changed IPv4 from %s to %s?',
- self._fpr, entry['ipv4'], self.dirip)
- return False
- if not self.ipv4_dirport_matches(entry['dirport'], exact=True):
- logging.warning('%s excluded: has it changed DirPort from %s:%d to ' +
- '%s:%d?', self._fpr, self.dirip, int(entry['dirport']),
- self.dirip, self.dirport)
- return False
- if not self.ipv4_orport_matches(entry['orport'], exact=True):
- logging.warning('%s excluded: has it changed ORPort from %s:%d to ' +
- '%s:%d?', self._fpr, self.dirip, int(entry['orport']),
- self.dirip, self.orport)
- return False
- if entry.has_key('ipv6') and self.has_ipv6():
- # if both entry and fallback have an ipv6 address, compare them
- if not self.ipv6_and_orport_matches(entry['ipv6_addr'],
- entry['ipv6_orport'],
- exact=True):
- logging.warning('%s excluded: has it changed IPv6 ORPort from %s ' +
- 'to %s:%d?', self._fpr, entry['ipv6'],
- self.ipv6addr, self.ipv6orport)
- return False
- # if the fallback has an IPv6 address but the whitelist entry
- # doesn't, or vice versa, the whitelist entry doesn't match
- elif entry.has_key('ipv6') and not self.has_ipv6():
- logging.warning('%s excluded: has it lost its former IPv6 address %s?',
- self._fpr, entry['ipv6'])
- return False
- elif not entry.has_key('ipv6') and self.has_ipv6():
- logging.warning('%s excluded: has it gained an IPv6 address %s:%d?',
- self._fpr, self.ipv6addr, self.ipv6orport)
- return False
- return True
-
- def entry_matches_fuzzy(self, entry):
- """ Is entry a fuzzy match for this fallback?
- A fallback is a fuzzy match for entry if at least one of these keys
- in entry matches:
- id
- ipv4
- ipv6 (if present in both the fallback and whitelist)
- The ports and nickname are ignored. Missing or extra ipv6 addresses
- are ignored.
-
- Doesn't log any warning messages. """
- if self.id_matches(entry['id'], exact=False):
- return True
- if self.ipv4_addr_matches(entry['ipv4'], exact=False):
- return True
- if entry.has_key('ipv6') and self.has_ipv6():
- # if both entry and fallback have an ipv6 address, compare them
- if self.ipv6_addr_matches(entry['ipv6_addr'], exact=False):
- return True
- return False
-
- def is_in_whitelist(self, relaylist, exact=False):
- """ If exact is True (existing fallback list), check if this fallback is
- an exact match for any whitelist entry, using entry_matches_exact().
-
- If exact is False (new fallback whitelist), check if this fallback is
- a fuzzy match for any whitelist entry, using entry_matches_fuzzy(). """
- for entry in relaylist:
- if exact:
- if self.entry_matches_exact(entry):
- return True
- else:
- if self.entry_matches_fuzzy(entry):
- return True
- return False
-
- def cw_to_bw_factor(self):
- # any relays with a missing or zero consensus weight are not candidates
- # any relays with a missing advertised bandwidth have it set to zero
- return self._data['advertised_bandwidth'] / self._data['consensus_weight']
-
- # since advertised_bandwidth is reported by the relay, it can be gamed
- # to avoid this, use the median consensus weight to bandwidth factor to
- # estimate this relay's measured bandwidth, and make that the upper limit
- def measured_bandwidth(self, median_cw_to_bw_factor):
- cw_to_bw= median_cw_to_bw_factor
- # Reduce exit bandwidth to make sure we're not overloading them
- if self.is_exit():
- cw_to_bw *= EXIT_BANDWIDTH_FRACTION
- measured_bandwidth = self._data['consensus_weight'] * cw_to_bw
- if self._data['advertised_bandwidth'] != 0:
- # limit advertised bandwidth (if available) to measured bandwidth
- return min(measured_bandwidth, self._data['advertised_bandwidth'])
- else:
- return measured_bandwidth
-
- def set_measured_bandwidth(self, median_cw_to_bw_factor):
- self._data['measured_bandwidth'] = self.measured_bandwidth(
- median_cw_to_bw_factor)
-
- def is_exit(self):
- return 'Exit' in self._data['flags']
-
- def is_guard(self):
- return 'Guard' in self._data['flags']
-
- def is_running(self):
- return 'Running' in self._data['flags']
-
- # does this fallback have an IPv6 address and orport?
- def has_ipv6(self):
- return self.ipv6addr is not None and self.ipv6orport is not None
-
- # strip leading and trailing brackets from an IPv6 address
- # safe to use on non-bracketed IPv6 and on IPv4 addresses
- # also convert to unicode, and make None appear as ''
- @staticmethod
- def strip_ipv6_brackets(ip):
- if ip is None:
- return unicode('')
- if len(ip) < 2:
- return unicode(ip)
- if ip[0] == '[' and ip[-1] == ']':
- return unicode(ip[1:-1])
- return unicode(ip)
-
- # are ip_a and ip_b in the same netblock?
- # mask_bits is the size of the netblock
- # takes both IPv4 and IPv6 addresses
- # the versions of ip_a and ip_b must be the same
- # the mask must be valid for the IP version
- @staticmethod
- def netblocks_equal(ip_a, ip_b, mask_bits):
- if ip_a is None or ip_b is None:
- return False
- ip_a = Candidate.strip_ipv6_brackets(ip_a)
- ip_b = Candidate.strip_ipv6_brackets(ip_b)
- a = ipaddress.ip_address(ip_a)
- b = ipaddress.ip_address(ip_b)
- if a.version != b.version:
- raise Exception('Mismatching IP versions in %s and %s'%(ip_a, ip_b))
- if mask_bits > a.max_prefixlen:
- logging.error('Bad IP mask %d for %s and %s'%(mask_bits, ip_a, ip_b))
- mask_bits = a.max_prefixlen
- if mask_bits < 0:
- logging.error('Bad IP mask %d for %s and %s'%(mask_bits, ip_a, ip_b))
- mask_bits = 0
- a_net = ipaddress.ip_network('%s/%d'%(ip_a, mask_bits), strict=False)
- return b in a_net
-
- # is this fallback's IPv4 address (dirip) in the same netblock as other's
- # IPv4 address?
- # mask_bits is the size of the netblock
- def ipv4_netblocks_equal(self, other, mask_bits):
- return Candidate.netblocks_equal(self.dirip, other.dirip, mask_bits)
-
- # is this fallback's IPv6 address (ipv6addr) in the same netblock as
- # other's IPv6 address?
- # Returns False if either fallback has no IPv6 address
- # mask_bits is the size of the netblock
- def ipv6_netblocks_equal(self, other, mask_bits):
- if not self.has_ipv6() or not other.has_ipv6():
- return False
- return Candidate.netblocks_equal(self.ipv6addr, other.ipv6addr, mask_bits)
-
- # is this fallback's IPv4 DirPort the same as other's IPv4 DirPort?
- def dirport_equal(self, other):
- return self.dirport == other.dirport
-
- # is this fallback's IPv4 ORPort the same as other's IPv4 ORPort?
- def ipv4_orport_equal(self, other):
- return self.orport == other.orport
-
- # is this fallback's IPv6 ORPort the same as other's IPv6 ORPort?
- # Returns False if either fallback has no IPv6 address
- def ipv6_orport_equal(self, other):
- if not self.has_ipv6() or not other.has_ipv6():
- return False
- return self.ipv6orport == other.ipv6orport
-
- # does this fallback have the same DirPort, IPv4 ORPort, or
- # IPv6 ORPort as other?
- # Ignores IPv6 ORPort if either fallback has no IPv6 address
- def port_equal(self, other):
- return (self.dirport_equal(other) or self.ipv4_orport_equal(other)
- or self.ipv6_orport_equal(other))
-
- # return a list containing IPv4 ORPort, DirPort, and IPv6 ORPort (if present)
- def port_list(self):
- ports = [self.dirport, self.orport]
- if self.has_ipv6() and not self.ipv6orport in ports:
- ports.append(self.ipv6orport)
- return ports
-
- # does this fallback share a port with other, regardless of whether the
- # port types match?
- # For example, if self's IPv4 ORPort is 80 and other's DirPort is 80,
- # return True
- def port_shared(self, other):
- for p in self.port_list():
- if p in other.port_list():
- return True
- return False
-
- # log how long it takes to download a consensus from dirip:dirport
- # returns True if the download failed, False if it succeeded within max_time
- @staticmethod
- def fallback_consensus_download_speed(dirip, dirport, nickname, fingerprint,
- max_time):
- download_failed = False
- # some directory mirrors respond to requests in ways that hang python
- # sockets, which is why we log this line here
- logging.info('Initiating %sconsensus download from %s (%s:%d) %s.',
- 'microdesc ' if DOWNLOAD_MICRODESC_CONSENSUS else '',
- nickname, dirip, dirport, fingerprint)
- # there appears to be about 1 second of overhead when comparing stem's
- # internal trace time and the elapsed time calculated here
- TIMEOUT_SLOP = 1.0
- start = datetime.datetime.utcnow()
- try:
- consensus = get_consensus(
- endpoints = [(dirip, dirport)],
- timeout = (max_time + TIMEOUT_SLOP),
- validate = True,
- retries = 0,
- fall_back_to_authority = False,
- document_handler = DocumentHandler.BARE_DOCUMENT,
- microdescriptor = DOWNLOAD_MICRODESC_CONSENSUS
- ).run()[0]
- end = datetime.datetime.utcnow()
- time_since_expiry = (end - consensus.valid_until).total_seconds()
- time_until_valid = (consensus.valid_after - end).total_seconds()
- except Exception, stem_error:
- end = datetime.datetime.utcnow()
- log_excluded('Unable to retrieve a consensus from %s: %s', nickname,
- stem_error)
- status = 'error: "%s"' % (stem_error)
- level = logging.WARNING
- download_failed = True
- elapsed = (end - start).total_seconds()
- if download_failed:
- # keep the error failure status, and avoid using the variables
- pass
- elif elapsed > max_time:
- status = 'too slow'
- level = logging.WARNING
- download_failed = True
- elif (time_since_expiry > 0):
- status = 'outdated consensus, expired %ds ago'%(int(time_since_expiry))
- if time_since_expiry <= REASONABLY_LIVE_TIME:
- status += ', tolerating up to %ds'%(REASONABLY_LIVE_TIME)
- level = logging.INFO
- else:
- status += ', invalid'
- level = logging.WARNING
- download_failed = True
- elif (time_until_valid > 0):
- status = 'future consensus, valid in %ds'%(int(time_until_valid))
- if time_until_valid <= REASONABLY_LIVE_TIME:
- status += ', tolerating up to %ds'%(REASONABLY_LIVE_TIME)
- level = logging.INFO
- else:
- status += ', invalid'
- level = logging.WARNING
- download_failed = True
- else:
- status = 'ok'
- level = logging.DEBUG
- logging.log(level, 'Consensus download: %0.1fs %s from %s (%s:%d) %s, ' +
- 'max download time %0.1fs.', elapsed, status, nickname,
- dirip, dirport, fingerprint, max_time)
- return download_failed
-
- # does this fallback download the consensus fast enough?
- def check_fallback_download_consensus(self):
- # include the relay if we're not doing a check, or we can't check (IPv6)
- ipv4_failed = False
- ipv6_failed = False
- if PERFORM_IPV4_DIRPORT_CHECKS:
- ipv4_failed = Candidate.fallback_consensus_download_speed(self.dirip,
- self.dirport,
- self._data['nickname'],
- self._fpr,
- CONSENSUS_DOWNLOAD_SPEED_MAX)
- if self.has_ipv6() and PERFORM_IPV6_DIRPORT_CHECKS:
- # Clients assume the IPv6 DirPort is the same as the IPv4 DirPort
- ipv6_failed = Candidate.fallback_consensus_download_speed(self.ipv6addr,
- self.dirport,
- self._data['nickname'],
- self._fpr,
- CONSENSUS_DOWNLOAD_SPEED_MAX)
- return ((not ipv4_failed) and (not ipv6_failed))
-
- # if this fallback has not passed a download check, try it again,
- # and record the result, available in get_fallback_download_consensus
- def try_fallback_download_consensus(self):
- if not self.get_fallback_download_consensus():
- self._data['download_check'] = self.check_fallback_download_consensus()
-
- # did this fallback pass the download check?
- def get_fallback_download_consensus(self):
- # if we're not performing checks, return True
- if not PERFORM_IPV4_DIRPORT_CHECKS and not PERFORM_IPV6_DIRPORT_CHECKS:
- return True
- # if we are performing checks, but haven't done one, return False
- if not self._data.has_key('download_check'):
- return False
- return self._data['download_check']
-
- # output an optional header comment and info for this fallback
- # try_fallback_download_consensus before calling this
- def fallbackdir_line(self, fallbacks, prefilter_fallbacks):
- s = ''
- if OUTPUT_COMMENTS:
- s += self.fallbackdir_comment(fallbacks, prefilter_fallbacks)
- # if the download speed is ok, output a C string
- # if it's not, but we OUTPUT_COMMENTS, output a commented-out C string
- if self.get_fallback_download_consensus() or OUTPUT_COMMENTS:
- s += self.fallbackdir_info(self.get_fallback_download_consensus())
- return s
-
- # output a header comment for this fallback
- def fallbackdir_comment(self, fallbacks, prefilter_fallbacks):
- # /*
- # nickname
- # flags
- # adjusted bandwidth, consensus weight
- # [contact]
- # [identical contact counts]
- # */
- # Multiline C comment
- s = '/*'
- s += '\n'
- s += cleanse_c_multiline_comment(self._data['nickname'])
- s += '\n'
- s += 'Flags: '
- s += cleanse_c_multiline_comment(' '.join(sorted(self._data['flags'])))
- s += '\n'
- # this is an adjusted bandwidth, see calculate_measured_bandwidth()
- bandwidth = self._data['measured_bandwidth']
- weight = self._data['consensus_weight']
- s += 'Bandwidth: %.1f MByte/s, Consensus Weight: %d'%(
- bandwidth/(1024.0*1024.0),
- weight)
- s += '\n'
- if self._data['contact'] is not None:
- s += cleanse_c_multiline_comment(self._data['contact'])
- if CONTACT_COUNT:
- fallback_count = len([f for f in fallbacks
- if f._data['contact'] == self._data['contact']])
- if fallback_count > 1:
- s += '\n'
- s += '%d identical contacts listed' % (fallback_count)
-
- # output the fallback info C string for this fallback
- # this is the text that would go after FallbackDir in a torrc
- # if this relay failed the download test and we OUTPUT_COMMENTS,
- # comment-out the returned string
- def fallbackdir_info(self, dl_speed_ok):
- # "address:dirport orport=port id=fingerprint"
- # (insert additional madatory fields here)
- # "[ipv6=addr:orport]"
- # (insert additional optional fields here)
- # /* nickname=name */
- # /* extrainfo={0,1} */
- # (insert additional comment fields here)
- # /* ===== */
- # ,
- #
- # Do we want a C string, or a commented-out string?
- c_string = dl_speed_ok
- comment_string = not dl_speed_ok and OUTPUT_COMMENTS
- # If we don't want either kind of string, bail
- if not c_string and not comment_string:
- return ''
- s = ''
- # Comment out the fallback directory entry if it's too slow
- # See the debug output for which address and port is failing
- if comment_string:
- s += '/* Consensus download failed or was too slow:\n'
- # Multi-Line C string with trailing comma (part of a string list)
- # This makes it easier to diff the file, and remove IPv6 lines using grep
- # Integers don't need escaping
- s += '"%s orport=%d id=%s"'%(
- cleanse_c_string(self._data['dir_address']),
- self.orport,
- cleanse_c_string(self._fpr))
- s += '\n'
- # (insert additional madatory fields here)
- if self.has_ipv6():
- s += '" ipv6=%s:%d"'%(cleanse_c_string(self.ipv6addr), self.ipv6orport)
- s += '\n'
- # (insert additional optional fields here)
- if not comment_string:
- s += '/* '
- s += 'nickname=%s'%(cleanse_c_string(self._data['nickname']))
- if not comment_string:
- s += ' */'
- s += '\n'
- # if we know that the fallback is an extrainfo cache, flag it
- # and if we don't know, assume it is not
- if not comment_string:
- s += '/* '
- s += 'extrainfo=%d'%(1 if self._extra_info_cache else 0)
- if not comment_string:
- s += ' */'
- s += '\n'
- # (insert additional comment fields here)
- # The terminator and comma must be the last line in each fallback entry
- if not comment_string:
- s += '/* '
- s += SECTION_SEPARATOR_BASE
- if not comment_string:
- s += ' */'
- s += '\n'
- s += ','
- if comment_string:
- s += '\n'
- s += '*/'
- return s
-
-## Fallback Candidate List Class
-
-class CandidateList(dict):
- def __init__(self):
- pass
-
- def _add_relay(self, details):
- if not 'dir_address' in details: return
- c = Candidate(details)
- self[ c.get_fingerprint() ] = c
-
- def _add_uptime(self, uptime):
- try:
- fpr = uptime['fingerprint']
- except KeyError:
- raise Exception("Document has no fingerprint field.")
-
- try:
- c = self[fpr]
- except KeyError:
- logging.debug('Got unknown relay %s in uptime document.'%(fpr,))
- return
-
- c.add_uptime(uptime)
-
- def _add_details(self):
- logging.debug('Loading details document.')
- d = fetch('details',
- fields=('fingerprint,nickname,contact,last_changed_address_or_port,' +
- 'consensus_weight,advertised_bandwidth,or_addresses,' +
- 'dir_address,recommended_version,flags,effective_family,' +
- 'platform'))
- logging.debug('Loading details document done.')
-
- if not 'relays' in d: raise Exception("No relays found in document.")
-
- for r in d['relays']: self._add_relay(r)
-
- def _add_uptimes(self):
- logging.debug('Loading uptime document.')
- d = fetch('uptime')
- logging.debug('Loading uptime document done.')
-
- if not 'relays' in d: raise Exception("No relays found in document.")
- for r in d['relays']: self._add_uptime(r)
-
- def add_relays(self):
- self._add_details()
- self._add_uptimes()
-
- def count_guards(self):
- guard_count = 0
- for fpr in self.keys():
- if self[fpr].is_guard():
- guard_count += 1
- return guard_count
-
- # Find fallbacks that fit the uptime, stability, and flags criteria,
- # and make an array of them in self.fallbacks
- def compute_fallbacks(self):
- self.fallbacks = map(lambda x: self[x],
- filter(lambda x: self[x].is_candidate(),
- self.keys()))
-
- # sort fallbacks by their consensus weight to advertised bandwidth factor,
- # lowest to highest
- # used to find the median cw_to_bw_factor()
- def sort_fallbacks_by_cw_to_bw_factor(self):
- self.fallbacks.sort(key=lambda f: f.cw_to_bw_factor())
-
- # sort fallbacks by their measured bandwidth, highest to lowest
- # calculate_measured_bandwidth before calling this
- # this is useful for reviewing candidates in priority order
- def sort_fallbacks_by_measured_bandwidth(self):
- self.fallbacks.sort(key=lambda f: f._data['measured_bandwidth'],
- reverse=True)
-
- # sort fallbacks by the data field data_field, lowest to highest
- def sort_fallbacks_by(self, data_field):
- self.fallbacks.sort(key=lambda f: f._data[data_field])
-
- @staticmethod
- def load_relaylist(file_obj):
- """ Read each line in the file, and parse it like a FallbackDir line:
- an IPv4 address and optional port:
- <IPv4 address>:<port>
- which are parsed into dictionary entries:
- ipv4=<IPv4 address>
- dirport=<port>
- followed by a series of key=value entries:
- orport=<port>
- id=<fingerprint>
- ipv6=<IPv6 address>:<IPv6 orport>
- each line's key/value pairs are placed in a dictonary,
- (of string -> string key/value pairs),
- and these dictionaries are placed in an array.
- comments start with # and are ignored. """
- file_data = file_obj['data']
- file_name = file_obj['name']
- relaylist = []
- if file_data is None:
- return relaylist
- for line in file_data.split('\n'):
- relay_entry = {}
- # ignore comments
- line_comment_split = line.split('#')
- line = line_comment_split[0]
- # cleanup whitespace
- line = cleanse_whitespace(line)
- line = line.strip()
- if len(line) == 0:
- continue
- for item in line.split(' '):
- item = item.strip()
- if len(item) == 0:
- continue
- key_value_split = item.split('=')
- kvl = len(key_value_split)
- if kvl < 1 or kvl > 2:
- print '#error Bad %s item: %s, format is key=value.'%(
- file_name, item)
- if kvl == 1:
- # assume that entries without a key are the ipv4 address,
- # perhaps with a dirport
- ipv4_maybe_dirport = key_value_split[0]
- ipv4_maybe_dirport_split = ipv4_maybe_dirport.split(':')
- dirl = len(ipv4_maybe_dirport_split)
- if dirl < 1 or dirl > 2:
- print '#error Bad %s IPv4 item: %s, format is ipv4:port.'%(
- file_name, item)
- if dirl >= 1:
- relay_entry['ipv4'] = ipv4_maybe_dirport_split[0]
- if dirl == 2:
- relay_entry['dirport'] = ipv4_maybe_dirport_split[1]
- elif kvl == 2:
- relay_entry[key_value_split[0]] = key_value_split[1]
- # split ipv6 addresses and orports
- if key_value_split[0] == 'ipv6':
- ipv6_orport_split = key_value_split[1].rsplit(':', 1)
- ipv6l = len(ipv6_orport_split)
- if ipv6l != 2:
- print '#error Bad %s IPv6 item: %s, format is [ipv6]:orport.'%(
- file_name, item)
- relay_entry['ipv6_addr'] = ipv6_orport_split[0]
- relay_entry['ipv6_orport'] = ipv6_orport_split[1]
- relaylist.append(relay_entry)
- return relaylist
-
- def apply_filter_lists(self, whitelist_obj, exact=False):
- """ Apply the fallback whitelist_obj to this fallback list,
- passing exact to is_in_whitelist(). """
- excluded_count = 0
- logging.debug('Applying whitelist')
- # parse the whitelist
- whitelist = self.load_relaylist(whitelist_obj)
- filtered_fallbacks = []
- for f in self.fallbacks:
- in_whitelist = f.is_in_whitelist(whitelist, exact=exact)
- if in_whitelist:
- # include
- filtered_fallbacks.append(f)
- elif INCLUDE_UNLISTED_ENTRIES:
- # include
- filtered_fallbacks.append(f)
- else:
- # exclude
- excluded_count += 1
- log_excluded('Excluding %s: not in whitelist.',
- f._fpr)
- self.fallbacks = filtered_fallbacks
- return excluded_count
-
- @staticmethod
- def summarise_filters(initial_count, excluded_count):
- return '/* Whitelist excluded %d of %d candidates. */'%(
- excluded_count, initial_count)
-
- # calculate each fallback's measured bandwidth based on the median
- # consensus weight to advertised bandwidth ratio
- def calculate_measured_bandwidth(self):
- self.sort_fallbacks_by_cw_to_bw_factor()
- median_fallback = self.fallback_median(True)
- if median_fallback is not None:
- median_cw_to_bw_factor = median_fallback.cw_to_bw_factor()
- else:
- # this will never be used, because there are no fallbacks
- median_cw_to_bw_factor = None
- for f in self.fallbacks:
- f.set_measured_bandwidth(median_cw_to_bw_factor)
-
- # remove relays with low measured bandwidth from the fallback list
- # calculate_measured_bandwidth for each relay before calling this
- def remove_low_bandwidth_relays(self):
- if MIN_BANDWIDTH is None:
- return
- above_min_bw_fallbacks = []
- for f in self.fallbacks:
- if f._data['measured_bandwidth'] >= MIN_BANDWIDTH:
- above_min_bw_fallbacks.append(f)
- else:
- # the bandwidth we log here is limited by the relay's consensus weight
- # as well as its adverttised bandwidth. See set_measured_bandwidth
- # for details
- log_excluded('%s not a candidate: bandwidth %.1fMByte/s too low, ' +
- 'must be at least %.1fMByte/s', f._fpr,
- f._data['measured_bandwidth']/(1024.0*1024.0),
- MIN_BANDWIDTH/(1024.0*1024.0))
- self.fallbacks = above_min_bw_fallbacks
-
- # the minimum fallback in the list
- # call one of the sort_fallbacks_* functions before calling this
- def fallback_min(self):
- if len(self.fallbacks) > 0:
- return self.fallbacks[-1]
- else:
- return None
-
- # the median fallback in the list
- # call one of the sort_fallbacks_* functions before calling this
- def fallback_median(self, require_advertised_bandwidth):
- # use the low-median when there are an evan number of fallbacks,
- # for consistency with the bandwidth authorities
- if len(self.fallbacks) > 0:
- median_position = (len(self.fallbacks) - 1) / 2
- if not require_advertised_bandwidth:
- return self.fallbacks[median_position]
- # if we need advertised_bandwidth but this relay doesn't have it,
- # move to a fallback with greater consensus weight until we find one
- while not self.fallbacks[median_position]._data['advertised_bandwidth']:
- median_position += 1
- if median_position >= len(self.fallbacks):
- return None
- return self.fallbacks[median_position]
- else:
- return None
-
- # the maximum fallback in the list
- # call one of the sort_fallbacks_* functions before calling this
- def fallback_max(self):
- if len(self.fallbacks) > 0:
- return self.fallbacks[0]
- else:
- return None
-
- # return a new bag suitable for storing attributes
- @staticmethod
- def attribute_new():
- return dict()
-
- # get the count of attribute in attribute_bag
- # if attribute is None or the empty string, return 0
- @staticmethod
- def attribute_count(attribute, attribute_bag):
- if attribute is None or attribute == '':
- return 0
- if attribute not in attribute_bag:
- return 0
- return attribute_bag[attribute]
-
- # does attribute_bag contain more than max_count instances of attribute?
- # if so, return False
- # if not, return True
- # if attribute is None or the empty string, or max_count is invalid,
- # always return True
- @staticmethod
- def attribute_allow(attribute, attribute_bag, max_count=1):
- if attribute is None or attribute == '' or max_count <= 0:
- return True
- elif CandidateList.attribute_count(attribute, attribute_bag) >= max_count:
- return False
- else:
- return True
-
- # add attribute to attribute_bag, incrementing the count if it is already
- # present
- # if attribute is None or the empty string, or count is invalid,
- # do nothing
- @staticmethod
- def attribute_add(attribute, attribute_bag, count=1):
- if attribute is None or attribute == '' or count <= 0:
- pass
- attribute_bag.setdefault(attribute, 0)
- attribute_bag[attribute] += count
-
- # make sure there are only MAX_FALLBACKS_PER_IP fallbacks per IPv4 address,
- # and per IPv6 address
- # there is only one IPv4 address on each fallback: the IPv4 DirPort address
- # (we choose the IPv4 ORPort which is on the same IPv4 as the DirPort)
- # there is at most one IPv6 address on each fallback: the IPv6 ORPort address
- # we try to match the IPv4 ORPort, but will use any IPv6 address if needed
- # (clients only use the IPv6 ORPort)
- # if there is no IPv6 address, only the IPv4 address is checked
- # return the number of candidates we excluded
- def limit_fallbacks_same_ip(self):
- ip_limit_fallbacks = []
- ip_list = CandidateList.attribute_new()
- for f in self.fallbacks:
- if (CandidateList.attribute_allow(f.dirip, ip_list,
- MAX_FALLBACKS_PER_IPV4)
- and CandidateList.attribute_allow(f.ipv6addr, ip_list,
- MAX_FALLBACKS_PER_IPV6)):
- ip_limit_fallbacks.append(f)
- CandidateList.attribute_add(f.dirip, ip_list)
- if f.has_ipv6():
- CandidateList.attribute_add(f.ipv6addr, ip_list)
- elif not CandidateList.attribute_allow(f.dirip, ip_list,
- MAX_FALLBACKS_PER_IPV4):
- log_excluded('Eliminated %s: already have %d fallback(s) on IPv4 %s'
- %(f._fpr, CandidateList.attribute_count(f.dirip, ip_list),
- f.dirip))
- elif (f.has_ipv6() and
- not CandidateList.attribute_allow(f.ipv6addr, ip_list,
- MAX_FALLBACKS_PER_IPV6)):
- log_excluded('Eliminated %s: already have %d fallback(s) on IPv6 %s'
- %(f._fpr, CandidateList.attribute_count(f.ipv6addr,
- ip_list),
- f.ipv6addr))
- original_count = len(self.fallbacks)
- self.fallbacks = ip_limit_fallbacks
- return original_count - len(self.fallbacks)
-
- # make sure there are only MAX_FALLBACKS_PER_CONTACT fallbacks for each
- # ContactInfo
- # if there is no ContactInfo, allow the fallback
- # this check can be gamed by providing no ContactInfo, or by setting the
- # ContactInfo to match another fallback
- # However, given the likelihood that relays with the same ContactInfo will
- # go down at similar times, its usefulness outweighs the risk
- def limit_fallbacks_same_contact(self):
- contact_limit_fallbacks = []
- contact_list = CandidateList.attribute_new()
- for f in self.fallbacks:
- if CandidateList.attribute_allow(f._data['contact'], contact_list,
- MAX_FALLBACKS_PER_CONTACT):
- contact_limit_fallbacks.append(f)
- CandidateList.attribute_add(f._data['contact'], contact_list)
- else:
- log_excluded(
- 'Eliminated %s: already have %d fallback(s) on ContactInfo %s'
- %(f._fpr, CandidateList.attribute_count(f._data['contact'],
- contact_list),
- f._data['contact']))
- original_count = len(self.fallbacks)
- self.fallbacks = contact_limit_fallbacks
- return original_count - len(self.fallbacks)
-
- # make sure there are only MAX_FALLBACKS_PER_FAMILY fallbacks per effective
- # family
- # if there is no family, allow the fallback
- # we use effective family, which ensures mutual family declarations
- # but the check can be gamed by not declaring a family at all
- # if any indirect families exist, the result depends on the order in which
- # fallbacks are sorted in the list
- def limit_fallbacks_same_family(self):
- family_limit_fallbacks = []
- fingerprint_list = CandidateList.attribute_new()
- for f in self.fallbacks:
- if CandidateList.attribute_allow(f._fpr, fingerprint_list,
- MAX_FALLBACKS_PER_FAMILY):
- family_limit_fallbacks.append(f)
- CandidateList.attribute_add(f._fpr, fingerprint_list)
- for family_fingerprint in f._data['effective_family']:
- CandidateList.attribute_add(family_fingerprint, fingerprint_list)
- else:
- # we already have a fallback with this fallback in its effective
- # family
- log_excluded(
- 'Eliminated %s: already have %d fallback(s) in effective family'
- %(f._fpr, CandidateList.attribute_count(f._fpr, fingerprint_list)))
- original_count = len(self.fallbacks)
- self.fallbacks = family_limit_fallbacks
- return original_count - len(self.fallbacks)
-
- # try once to get the descriptors for fingerprint_list using stem
- # returns an empty list on exception
- @staticmethod
- def get_fallback_descriptors_once(fingerprint_list):
- desc_list = get_server_descriptors(fingerprints=fingerprint_list).run(suppress=True)
- return desc_list
-
- # try up to max_retries times to get the descriptors for fingerprint_list
- # using stem. Stops retrying when all descriptors have been retrieved.
- # returns a list containing the descriptors that were retrieved
- @staticmethod
- def get_fallback_descriptors(fingerprint_list, max_retries=5):
- # we can't use stem's retries=, because we want to support more than 96
- # descriptors
- #
- # add an attempt for every MAX_FINGERPRINTS (or part thereof) in the list
- max_retries += (len(fingerprint_list) + MAX_FINGERPRINTS - 1) / MAX_FINGERPRINTS
- remaining_list = fingerprint_list
- desc_list = []
- for _ in xrange(max_retries):
- if len(remaining_list) == 0:
- break
- new_desc_list = CandidateList.get_fallback_descriptors_once(remaining_list[0:MAX_FINGERPRINTS])
- for d in new_desc_list:
- try:
- remaining_list.remove(d.fingerprint)
- except ValueError:
- # warn and ignore if a directory mirror returned a bad descriptor
- logging.warning("Directory mirror returned unwanted descriptor %s, ignoring",
- d.fingerprint)
- continue
- desc_list.append(d)
- return desc_list
-
- # find the fallbacks that cache extra-info documents
- # Onionoo doesn't know this, so we have to use stem
- def mark_extra_info_caches(self):
- fingerprint_list = [ f._fpr for f in self.fallbacks ]
- logging.info("Downloading fallback descriptors to find extra-info caches")
- desc_list = CandidateList.get_fallback_descriptors(fingerprint_list)
- for d in desc_list:
- self[d.fingerprint]._extra_info_cache = d.extra_info_cache
- missing_descriptor_list = [ f._fpr for f in self.fallbacks
- if f._extra_info_cache is None ]
- for f in missing_descriptor_list:
- logging.warning("No descriptor for {}. Assuming extrainfo=0.".format(f))
-
- # try a download check on each fallback candidate in order
- # stop after max_count successful downloads
- # but don't remove any candidates from the array
- def try_download_consensus_checks(self, max_count):
- dl_ok_count = 0
- for f in self.fallbacks:
- f.try_fallback_download_consensus()
- if f.get_fallback_download_consensus():
- # this fallback downloaded a consensus ok
- dl_ok_count += 1
- if dl_ok_count >= max_count:
- # we have enough fallbacks
- return
-
- # put max_count successful candidates in the fallbacks array:
- # - perform download checks on each fallback candidate
- # - retry failed candidates if CONSENSUS_DOWNLOAD_RETRY is set
- # - eliminate failed candidates
- # - if there are more than max_count candidates, eliminate lowest bandwidth
- # - if there are fewer than max_count candidates, leave only successful
- # Return the number of fallbacks that failed the consensus check
- def perform_download_consensus_checks(self, max_count):
- self.sort_fallbacks_by_measured_bandwidth()
- self.try_download_consensus_checks(max_count)
- if CONSENSUS_DOWNLOAD_RETRY:
- # try unsuccessful candidates again
- # we could end up with more than max_count successful candidates here
- self.try_download_consensus_checks(max_count)
- # now we have at least max_count successful candidates,
- # or we've tried them all
- original_count = len(self.fallbacks)
- self.fallbacks = filter(lambda x: x.get_fallback_download_consensus(),
- self.fallbacks)
- # some of these failed the check, others skipped the check,
- # if we already had enough successful downloads
- failed_count = original_count - len(self.fallbacks)
- self.fallbacks = self.fallbacks[:max_count]
- return failed_count
-
- # return a string that describes a/b as a percentage
- @staticmethod
- def describe_percentage(a, b):
- if b != 0:
- return '%d/%d = %.0f%%'%(a, b, (a*100.0)/b)
- else:
- # technically, 0/0 is undefined, but 0.0% is a sensible result
- return '%d/%d = %.0f%%'%(a, b, 0.0)
-
- # return a dictionary of lists of fallbacks by IPv4 netblock
- # the dictionary is keyed by the fingerprint of an arbitrary fallback
- # in each netblock
- # mask_bits is the size of the netblock
- def fallbacks_by_ipv4_netblock(self, mask_bits):
- netblocks = {}
- for f in self.fallbacks:
- found_netblock = False
- for b in netblocks.keys():
- # we found an existing netblock containing this fallback
- if f.ipv4_netblocks_equal(self[b], mask_bits):
- # add it to the list
- netblocks[b].append(f)
- found_netblock = True
- break
- # make a new netblock based on this fallback's fingerprint
- if not found_netblock:
- netblocks[f._fpr] = [f]
- return netblocks
-
- # return a dictionary of lists of fallbacks by IPv6 netblock
- # where mask_bits is the size of the netblock
- def fallbacks_by_ipv6_netblock(self, mask_bits):
- netblocks = {}
- for f in self.fallbacks:
- # skip fallbacks without IPv6 addresses
- if not f.has_ipv6():
- continue
- found_netblock = False
- for b in netblocks.keys():
- # we found an existing netblock containing this fallback
- if f.ipv6_netblocks_equal(self[b], mask_bits):
- # add it to the list
- netblocks[b].append(f)
- found_netblock = True
- break
- # make a new netblock based on this fallback's fingerprint
- if not found_netblock:
- netblocks[f._fpr] = [f]
- return netblocks
-
- # log a message about the proportion of fallbacks in each IPv4 netblock,
- # where mask_bits is the size of the netblock
- def describe_fallback_ipv4_netblock_mask(self, mask_bits):
- fallback_count = len(self.fallbacks)
- shared_netblock_fallback_count = 0
- most_frequent_netblock = None
- netblocks = self.fallbacks_by_ipv4_netblock(mask_bits)
- for b in netblocks.keys():
- if len(netblocks[b]) > 1:
- # how many fallbacks are in a netblock with other fallbacks?
- shared_netblock_fallback_count += len(netblocks[b])
- # what's the netblock with the most fallbacks?
- if (most_frequent_netblock is None
- or len(netblocks[b]) > len(netblocks[most_frequent_netblock])):
- most_frequent_netblock = b
- logging.debug('Fallback IPv4 addresses in the same /%d:'%(mask_bits))
- for f in netblocks[b]:
- logging.debug('%s - %s', f.dirip, f._fpr)
- if most_frequent_netblock is not None:
- logging.warning('There are %s fallbacks in the IPv4 /%d containing %s'%(
- CandidateList.describe_percentage(
- len(netblocks[most_frequent_netblock]),
- fallback_count),
- mask_bits,
- self[most_frequent_netblock].dirip))
- if shared_netblock_fallback_count > 0:
- logging.warning(('%s of fallbacks are in an IPv4 /%d with other ' +
- 'fallbacks')%(CandidateList.describe_percentage(
- shared_netblock_fallback_count,
- fallback_count),
- mask_bits))
-
- # log a message about the proportion of fallbacks in each IPv6 netblock,
- # where mask_bits is the size of the netblock
- def describe_fallback_ipv6_netblock_mask(self, mask_bits):
- fallback_count = len(self.fallbacks_with_ipv6())
- shared_netblock_fallback_count = 0
- most_frequent_netblock = None
- netblocks = self.fallbacks_by_ipv6_netblock(mask_bits)
- for b in netblocks.keys():
- if len(netblocks[b]) > 1:
- # how many fallbacks are in a netblock with other fallbacks?
- shared_netblock_fallback_count += len(netblocks[b])
- # what's the netblock with the most fallbacks?
- if (most_frequent_netblock is None
- or len(netblocks[b]) > len(netblocks[most_frequent_netblock])):
- most_frequent_netblock = b
- logging.debug('Fallback IPv6 addresses in the same /%d:'%(mask_bits))
- for f in netblocks[b]:
- logging.debug('%s - %s', f.ipv6addr, f._fpr)
- if most_frequent_netblock is not None:
- logging.warning('There are %s fallbacks in the IPv6 /%d containing %s'%(
- CandidateList.describe_percentage(
- len(netblocks[most_frequent_netblock]),
- fallback_count),
- mask_bits,
- self[most_frequent_netblock].ipv6addr))
- if shared_netblock_fallback_count > 0:
- logging.warning(('%s of fallbacks are in an IPv6 /%d with other ' +
- 'fallbacks')%(CandidateList.describe_percentage(
- shared_netblock_fallback_count,
- fallback_count),
- mask_bits))
-
- # log a message about the proportion of fallbacks in each IPv4 /8, /16,
- # and /24
- def describe_fallback_ipv4_netblocks(self):
- # this doesn't actually tell us anything useful
- #self.describe_fallback_ipv4_netblock_mask(8)
- self.describe_fallback_ipv4_netblock_mask(16)
- #self.describe_fallback_ipv4_netblock_mask(24)
-
- # log a message about the proportion of fallbacks in each IPv6 /12 (RIR),
- # /23 (smaller RIR blocks), /32 (LIR), /48 (Customer), and /64 (Host)
- # https://www.iana.org/assignments/ipv6-unicast-address-assignments/
- def describe_fallback_ipv6_netblocks(self):
- # these don't actually tell us anything useful
- #self.describe_fallback_ipv6_netblock_mask(12)
- #self.describe_fallback_ipv6_netblock_mask(23)
- self.describe_fallback_ipv6_netblock_mask(32)
- #self.describe_fallback_ipv6_netblock_mask(48)
- self.describe_fallback_ipv6_netblock_mask(64)
-
- # log a message about the proportion of fallbacks in each IPv4 and IPv6
- # netblock
- def describe_fallback_netblocks(self):
- self.describe_fallback_ipv4_netblocks()
- self.describe_fallback_ipv6_netblocks()
-
- # return a list of fallbacks which are on the IPv4 ORPort port
- def fallbacks_on_ipv4_orport(self, port):
- return filter(lambda x: x.orport == port, self.fallbacks)
-
- # return a list of fallbacks which are on the IPv6 ORPort port
- def fallbacks_on_ipv6_orport(self, port):
- return filter(lambda x: x.ipv6orport == port, self.fallbacks_with_ipv6())
-
- # return a list of fallbacks which are on the DirPort port
- def fallbacks_on_dirport(self, port):
- return filter(lambda x: x.dirport == port, self.fallbacks)
-
- # log a message about the proportion of fallbacks on IPv4 ORPort port
- # and return that count
- def describe_fallback_ipv4_orport(self, port):
- port_count = len(self.fallbacks_on_ipv4_orport(port))
- fallback_count = len(self.fallbacks)
- logging.warning('%s of fallbacks are on IPv4 ORPort %d'%(
- CandidateList.describe_percentage(port_count,
- fallback_count),
- port))
- return port_count
-
- # log a message about the proportion of IPv6 fallbacks on IPv6 ORPort port
- # and return that count
- def describe_fallback_ipv6_orport(self, port):
- port_count = len(self.fallbacks_on_ipv6_orport(port))
- fallback_count = len(self.fallbacks_with_ipv6())
- logging.warning('%s of IPv6 fallbacks are on IPv6 ORPort %d'%(
- CandidateList.describe_percentage(port_count,
- fallback_count),
- port))
- return port_count
-
- # log a message about the proportion of fallbacks on DirPort port
- # and return that count
- def describe_fallback_dirport(self, port):
- port_count = len(self.fallbacks_on_dirport(port))
- fallback_count = len(self.fallbacks)
- logging.warning('%s of fallbacks are on DirPort %d'%(
- CandidateList.describe_percentage(port_count,
- fallback_count),
- port))
- return port_count
-
- # log a message about the proportion of fallbacks on each dirport,
- # each IPv4 orport, and each IPv6 orport
- def describe_fallback_ports(self):
- fallback_count = len(self.fallbacks)
- ipv4_or_count = fallback_count
- ipv4_or_count -= self.describe_fallback_ipv4_orport(443)
- ipv4_or_count -= self.describe_fallback_ipv4_orport(9001)
- logging.warning('%s of fallbacks are on other IPv4 ORPorts'%(
- CandidateList.describe_percentage(ipv4_or_count,
- fallback_count)))
- ipv6_fallback_count = len(self.fallbacks_with_ipv6())
- ipv6_or_count = ipv6_fallback_count
- ipv6_or_count -= self.describe_fallback_ipv6_orport(443)
- ipv6_or_count -= self.describe_fallback_ipv6_orport(9001)
- logging.warning('%s of IPv6 fallbacks are on other IPv6 ORPorts'%(
- CandidateList.describe_percentage(ipv6_or_count,
- ipv6_fallback_count)))
- dir_count = fallback_count
- dir_count -= self.describe_fallback_dirport(80)
- dir_count -= self.describe_fallback_dirport(9030)
- logging.warning('%s of fallbacks are on other DirPorts'%(
- CandidateList.describe_percentage(dir_count,
- fallback_count)))
-
- # return a list of fallbacks which cache extra-info documents
- def fallbacks_with_extra_info_cache(self):
- return filter(lambda x: x._extra_info_cache, self.fallbacks)
-
- # log a message about the proportion of fallbacks that cache extra-info docs
- def describe_fallback_extra_info_caches(self):
- extra_info_falback_count = len(self.fallbacks_with_extra_info_cache())
- fallback_count = len(self.fallbacks)
- logging.warning('%s of fallbacks cache extra-info documents'%(
- CandidateList.describe_percentage(extra_info_falback_count,
- fallback_count)))
-
- # return a list of fallbacks which have the Exit flag
- def fallbacks_with_exit(self):
- return filter(lambda x: x.is_exit(), self.fallbacks)
-
- # log a message about the proportion of fallbacks with an Exit flag
- def describe_fallback_exit_flag(self):
- exit_falback_count = len(self.fallbacks_with_exit())
- fallback_count = len(self.fallbacks)
- logging.warning('%s of fallbacks have the Exit flag'%(
- CandidateList.describe_percentage(exit_falback_count,
- fallback_count)))
-
- # return a list of fallbacks which have an IPv6 address
- def fallbacks_with_ipv6(self):
- return filter(lambda x: x.has_ipv6(), self.fallbacks)
-
- # log a message about the proportion of fallbacks on IPv6
- def describe_fallback_ip_family(self):
- ipv6_falback_count = len(self.fallbacks_with_ipv6())
- fallback_count = len(self.fallbacks)
- logging.warning('%s of fallbacks are on IPv6'%(
- CandidateList.describe_percentage(ipv6_falback_count,
- fallback_count)))
-
- def summarise_fallbacks(self, eligible_count, operator_count, failed_count,
- guard_count, target_count):
- s = ''
- # Report:
- # whether we checked consensus download times
- # the number of fallback directories (and limits/exclusions, if relevant)
- # min & max fallback bandwidths
- # #error if below minimum count
- if PERFORM_IPV4_DIRPORT_CHECKS or PERFORM_IPV6_DIRPORT_CHECKS:
- s += '/* Checked %s%s%s DirPorts served a consensus within %.1fs. */'%(
- 'IPv4' if PERFORM_IPV4_DIRPORT_CHECKS else '',
- ' and ' if (PERFORM_IPV4_DIRPORT_CHECKS
- and PERFORM_IPV6_DIRPORT_CHECKS) else '',
- 'IPv6' if PERFORM_IPV6_DIRPORT_CHECKS else '',
- CONSENSUS_DOWNLOAD_SPEED_MAX)
- else:
- s += '/* Did not check IPv4 or IPv6 DirPort consensus downloads. */'
- s += '\n'
- # Multiline C comment with #error if things go bad
- s += '/*'
- s += '\n'
- # Integers don't need escaping in C comments
- fallback_count = len(self.fallbacks)
- if FALLBACK_PROPORTION_OF_GUARDS is None:
- fallback_proportion = ''
- else:
- fallback_proportion = ', Target %d (%d * %.2f)'%(target_count,
- guard_count,
- FALLBACK_PROPORTION_OF_GUARDS)
- s += 'Final Count: %d (Eligible %d%s'%(fallback_count, eligible_count,
- fallback_proportion)
- if MAX_FALLBACK_COUNT is not None:
- s += ', Max %d'%(MAX_FALLBACK_COUNT)
- s += ')\n'
- if eligible_count != fallback_count:
- removed_count = eligible_count - fallback_count
- excess_to_target_or_max = (eligible_count - operator_count - failed_count
- - fallback_count)
- # some 'Failed' failed the check, others 'Skipped' the check,
- # if we already had enough successful downloads
- s += ('Excluded: %d (Same Operator %d, Failed/Skipped Download %d, ' +
- 'Excess %d)')%(removed_count, operator_count, failed_count,
- excess_to_target_or_max)
- s += '\n'
- min_fb = self.fallback_min()
- min_bw = min_fb._data['measured_bandwidth']
- max_fb = self.fallback_max()
- max_bw = max_fb._data['measured_bandwidth']
- s += 'Bandwidth Range: %.1f - %.1f MByte/s'%(min_bw/(1024.0*1024.0),
- max_bw/(1024.0*1024.0))
- s += '\n'
- s += '*/'
- if fallback_count < MIN_FALLBACK_COUNT:
- # We must have a minimum number of fallbacks so they are always
- # reachable, and are in diverse locations
- s += '\n'
- s += '#error Fallback Count %d is too low. '%(fallback_count)
- s += 'Must be at least %d for diversity. '%(MIN_FALLBACK_COUNT)
- s += 'Try adding entries to the whitelist, '
- s += 'or setting INCLUDE_UNLISTED_ENTRIES = True.'
- return s
-
-def process_existing():
- logging.basicConfig(level=logging.INFO)
- logging.getLogger('stem').setLevel(logging.INFO)
- whitelist = {'data': parse_fallback_file(FALLBACK_FILE_NAME),
- 'name': FALLBACK_FILE_NAME}
- list_fallbacks(whitelist, exact=True)
-
-def process_default():
- logging.basicConfig(level=logging.WARNING)
- logging.getLogger('stem').setLevel(logging.WARNING)
- whitelist = {'data': read_from_file(WHITELIST_FILE_NAME, MAX_LIST_FILE_SIZE),
- 'name': WHITELIST_FILE_NAME}
- list_fallbacks(whitelist, exact=False)
-
-## Main Function
-def main():
- if get_command() == 'check_existing':
- process_existing()
- else:
- process_default()
-
-def get_command():
- if len(sys.argv) == 2:
- return sys.argv[1]
- else:
- return None
-
-def log_excluded(msg, *args):
- if get_command() == 'check_existing':
- logging.warning(msg, *args)
- else:
- logging.info(msg, *args)
-
-def list_fallbacks(whitelist, exact=False):
- """ Fetches required onionoo documents and evaluates the
- fallback directory criteria for each of the relays,
- passing exact to apply_filter_lists(). """
- print "/* type=fallback */"
- print ("/* version={} */"
- .format(cleanse_c_multiline_comment(FALLBACK_FORMAT_VERSION)))
- now = datetime.datetime.utcnow()
- timestamp = now.strftime('%Y%m%d%H%M%S')
- print ("/* timestamp={} */"
- .format(cleanse_c_multiline_comment(timestamp)))
- # end the header with a separator, to make it easier for parsers
- print SECTION_SEPARATOR_COMMENT
-
- logging.warning('Downloading and parsing Onionoo data. ' +
- 'This may take some time.')
- # find relays that could be fallbacks
- candidates = CandidateList()
- candidates.add_relays()
-
- # work out how many fallbacks we want
- guard_count = candidates.count_guards()
- if FALLBACK_PROPORTION_OF_GUARDS is None:
- target_count = guard_count
- else:
- target_count = int(guard_count * FALLBACK_PROPORTION_OF_GUARDS)
- # the maximum number of fallbacks is the least of:
- # - the target fallback count (FALLBACK_PROPORTION_OF_GUARDS * guard count)
- # - the maximum fallback count (MAX_FALLBACK_COUNT)
- if MAX_FALLBACK_COUNT is None:
- max_count = target_count
- else:
- max_count = min(target_count, MAX_FALLBACK_COUNT)
-
- candidates.compute_fallbacks()
- prefilter_fallbacks = copy.copy(candidates.fallbacks)
-
- # filter with the whitelist
- # if a relay has changed IPv4 address or ports recently, it will be excluded
- # as ineligible before we call apply_filter_lists, and so there will be no
- # warning that the details have changed from those in the whitelist.
- # instead, there will be an info-level log during the eligibility check.
- initial_count = len(candidates.fallbacks)
- excluded_count = candidates.apply_filter_lists(whitelist, exact=exact)
- print candidates.summarise_filters(initial_count, excluded_count)
- eligible_count = len(candidates.fallbacks)
-
- # calculate the measured bandwidth of each relay,
- # then remove low-bandwidth relays
- candidates.calculate_measured_bandwidth()
- candidates.remove_low_bandwidth_relays()
-
- # print the raw fallback list
- #for x in candidates.fallbacks:
- # print x.fallbackdir_line(True)
- # print json.dumps(candidates[x]._data, sort_keys=True, indent=4,
- # separators=(',', ': '), default=json_util.default)
-
- # impose mandatory conditions here, like one per contact, family, IP
- # in measured bandwidth order
- candidates.sort_fallbacks_by_measured_bandwidth()
- operator_count = 0
- # only impose these limits on the final list - operators can nominate
- # multiple candidate fallbacks, and then we choose the best set
- if not OUTPUT_CANDIDATES:
- operator_count += candidates.limit_fallbacks_same_ip()
- operator_count += candidates.limit_fallbacks_same_contact()
- operator_count += candidates.limit_fallbacks_same_family()
-
- # check if each candidate can serve a consensus
- # there's a small risk we've eliminated relays from the same operator that
- # can serve a consensus, in favour of one that can't
- # but given it takes up to 15 seconds to check each consensus download,
- # the risk is worth it
- if PERFORM_IPV4_DIRPORT_CHECKS or PERFORM_IPV6_DIRPORT_CHECKS:
- logging.warning('Checking consensus download speeds. ' +
- 'This may take some time.')
- failed_count = candidates.perform_download_consensus_checks(max_count)
-
- # work out which fallbacks cache extra-infos
- candidates.mark_extra_info_caches()
-
- # analyse and log interesting diversity metrics
- # like netblock, ports, exit, IPv4-only
- # (we can't easily analyse AS, and it's hard to accurately analyse country)
- candidates.describe_fallback_ip_family()
- # if we can't import the ipaddress module, we can't do netblock analysis
- if HAVE_IPADDRESS:
- candidates.describe_fallback_netblocks()
- candidates.describe_fallback_ports()
- candidates.describe_fallback_extra_info_caches()
- candidates.describe_fallback_exit_flag()
-
- # output C comments summarising the fallback selection process
- if len(candidates.fallbacks) > 0:
- print candidates.summarise_fallbacks(eligible_count, operator_count,
- failed_count, guard_count,
- target_count)
- else:
- print '/* No Fallbacks met criteria */'
-
- # output C comments specifying the OnionOO data used to create the list
- for s in fetch_source_list():
- print describe_fetch_source(s)
-
- # start the list with a separator, to make it easy for parsers
- print SECTION_SEPARATOR_COMMENT
-
- # sort the list differently depending on why we've created it:
- # if we're outputting the final fallback list, sort by fingerprint
- # this makes diffs much more stable
- # otherwise, if we're trying to find a bandwidth cutoff, or we want to
- # contact operators in priority order, sort by bandwidth (not yet
- # implemented)
- # otherwise, if we're contacting operators, sort by contact
- candidates.sort_fallbacks_by(OUTPUT_SORT_FIELD)
-
- for x in candidates.fallbacks:
- print x.fallbackdir_line(candidates.fallbacks, prefilter_fallbacks)
-
-if __name__ == "__main__":
- main()
diff --git a/scripts/test/chutney-git-bisect.sh b/scripts/test/chutney-git-bisect.sh
index dc1319a27a..dcf8ab1102 100755
--- a/scripts/test/chutney-git-bisect.sh
+++ b/scripts/test/chutney-git-bisect.sh
@@ -15,21 +15,21 @@
# Skips the test if <skip-flavour> fails (default no skip).
CHUTNEY_TRIES=3
-if [ ! -z "$1" ]; then
+if [ -n "$1" ]; then
CHUTNEY_TRIES="$1"
fi
-if [ ! -z "$2" ]; then
+if [ -n "$2" ]; then
cd "$2" || exit
fi
CHUTNEY_TEST_CMD="make test-network-all"
-if [ ! -z "$3" ]; then
+if [ -n "$3" ]; then
CHUTNEY_TEST_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $3"
fi
CHUTNEY_SKIP_ON_FAIL_CMD="true"
-if [ ! -z "$4" ]; then
+if [ -n "$4" ]; then
CHUTNEY_SKIP_ON_FAIL_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $4"
fi
diff --git a/scripts/test/cov-diff b/scripts/test/cov-diff
index f3ca856888..8751800966 100755
--- a/scripts/test/cov-diff
+++ b/scripts/test/cov-diff
@@ -16,6 +16,5 @@ for B in "$DIRB"/*; do
fi
perl -pe 's/^\s*\!*\d+(\*?):/ 1$1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$B" > "$B.tmp"
diff -u "$A.tmp" "$B.tmp" |perl -pe 's/^((?:\+\+\+|---)(?:.*tmp))\s+.*/$1/;'
- rm "$A.tmp" "$B.tmp"
+ rm -f "$A.tmp" "$B.tmp"
done
-
diff --git a/scripts/test/cov-test-determinism.sh b/scripts/test/cov-test-determinism.sh
new file mode 100755
index 0000000000..3b4f372e04
--- /dev/null
+++ b/scripts/test/cov-test-determinism.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# To use this script, build Tor with coverage enabled, and then say:
+# ./scripts/test/cov-test-determinism.sh run
+#
+# Let it run for a long time so it can run the tests over and over. It
+# will put their coverage outputs in coverage-raw/coverage-*/.
+#
+# Then say:
+# ./scripts/test/cov-test-determinism.sh check
+#
+# It will diff the other coverage outputs to the first one, and put their
+# diffs in coverage-raw/diff-coverage-*.
+
+run=0
+check=0
+
+if test "$1" = run; then
+ run=1
+elif test "$1" = check; then
+ check=1
+else
+ echo "First use 'run' with this script, then use 'check'."
+ exit 1
+fi
+
+if test "$run" = 1; then
+ while true; do
+ make reset-gcov
+ CD=coverage-raw/coverage-$(date +%s)
+ make -j5 check
+ mkdir -p "$CD"
+ ./scripts/test/coverage "$CD"
+ done
+fi
+
+if test "$check" = 1; then
+ cd coverage-raw || exit 1
+
+ FIRST="$(find . -name "coverage-*" -type d | head -1)"
+ rm -f A
+ ln -sf "$FIRST" A
+ for dir in coverage-*; do
+ rm -f B
+ ln -sf "$dir" B
+ ../scripts/test/cov-diff A B > "diff-$dir"
+ done
+fi
diff --git a/scripts/test/coverage b/scripts/test/coverage
index 7a417cdc89..f61c83bc72 100755
--- a/scripts/test/coverage
+++ b/scripts/test/coverage
@@ -13,8 +13,8 @@ for fn in src/core/*/*.c src/feature/*/*.c src/app/*/*.c src/lib/*/*.c; do
F=$(echo "$BN" | sed -e 's/\.c$//;')
GC="${BN}.gcov"
# Figure out the object file names
- ONS=$(echo "${DN}"/src_*-"${F}".o)
- ONS_WILDCARD_LITERAL="${DN}/src_*-${F}.o"
+ ONS=$(echo "${DN}"/*testing_a-"${F}".o)
+ ONS_WILDCARD_LITERAL="${DN}/*testing_a-${F}.o"
# If the wildcard didn't expand, no files
if [ "$ONS" != "${ONS_WILDCARD_LITERAL}" ]
then
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 22070c346b..803a0eda54 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -421,6 +421,10 @@ static config_var_t option_vars_[] = {
V(ExcludeExitNodes, ROUTERSET, NULL),
OBSOLETE("ExcludeSingleHopRelays"),
V(ExitNodes, ROUTERSET, NULL),
+ /* Researchers need a way to tell their clients to use specific
+ * middles that they also control, to allow safe live-network
+ * experimentation with new padding machines. */
+ V(MiddleNodes, ROUTERSET, NULL),
V(ExitPolicy, LINELIST, NULL),
V(ExitPolicyRejectPrivate, BOOL, "1"),
V(ExitPolicyRejectLocalInterfaces, BOOL, "0"),
@@ -1052,10 +1056,14 @@ config_free_all(void)
* (We return "[scrubbed]" if SafeLogging is "1", and address otherwise.)
*/
const char *
-safe_str_client(const char *address)
+safe_str_client_opts(const or_options_t *options, const char *address)
{
tor_assert(address);
- if (get_options()->SafeLogging_ == SAFELOG_SCRUB_ALL)
+ if (!options) {
+ options = get_options();
+ }
+
+ if (options->SafeLogging_ == SAFELOG_SCRUB_ALL)
return "[scrubbed]";
else
return address;
@@ -1069,10 +1077,14 @@ safe_str_client(const char *address)
* otherwise.)
*/
const char *
-safe_str(const char *address)
+safe_str_opts(const or_options_t *options, const char *address)
{
tor_assert(address);
- if (get_options()->SafeLogging_ != SAFELOG_SCRUB_NONE)
+ if (!options) {
+ options = get_options();
+ }
+
+ if (options->SafeLogging_ != SAFELOG_SCRUB_NONE)
return "[scrubbed]";
else
return address;
@@ -1693,6 +1705,7 @@ options_need_geoip_info(const or_options_t *options, const char **reason_out)
int routerset_usage =
routerset_needs_geoip(options->EntryNodes) ||
routerset_needs_geoip(options->ExitNodes) ||
+ routerset_needs_geoip(options->MiddleNodes) ||
routerset_needs_geoip(options->ExcludeExitNodes) ||
routerset_needs_geoip(options->ExcludeNodes) ||
routerset_needs_geoip(options->HSLayer2Nodes) ||
@@ -2132,6 +2145,7 @@ options_act(const or_options_t *old_options)
options->HSLayer2Nodes) ||
!routerset_equal(old_options->HSLayer3Nodes,
options->HSLayer3Nodes) ||
+ !routerset_equal(old_options->MiddleNodes, options->MiddleNodes) ||
options->StrictNodes != old_options->StrictNodes) {
log_info(LD_CIRC,
"Changed to using entry guards or bridges, or changed "
@@ -2620,7 +2634,7 @@ print_usage(void)
printf(
"Copyright (c) 2001-2004, Roger Dingledine\n"
"Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson\n"
-"Copyright (c) 2007-2018, The Tor Project, Inc.\n\n"
+"Copyright (c) 2007-2019, The Tor Project, Inc.\n\n"
"tor -f <torrc> [args]\n"
"See man page for options, or https://www.torproject.org/ for "
"documentation.\n");
@@ -3540,7 +3554,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
"(Bridge/V3)AuthoritativeDir is set.");
/* If we have a v3bandwidthsfile and it's broken, complain on startup */
if (options->V3BandwidthsFile && !old_options) {
- dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL);
+ dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL,
+ NULL);
}
/* same for guardfraction file */
if (options->GuardfractionFile && !old_options) {
@@ -4173,6 +4188,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
"You should also make sure you aren't listing this bridge's "
"fingerprint in any other MyFamily.");
}
+ if (options->MyFamily_lines && !options->ContactInfo) {
+ log_warn(LD_CONFIG, "MyFamily is set but ContactInfo is not configured. "
+ "ContactInfo should always be set when MyFamily option is too.");
+ }
if (normalize_nickname_list(&options->MyFamily,
options->MyFamily_lines, "MyFamily", msg))
return -1;
diff --git a/src/app/config/config.h b/src/app/config/config.h
index 4c497b83a6..46db02f944 100644
--- a/src/app/config/config.h
+++ b/src/app/config/config.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -141,6 +141,16 @@ MOCK_DECL(char *,
#define get_cachedir_fname_suffix(sub1, suffix) \
options_get_cachedir_fname2_suffix(get_options(), (sub1), NULL, (suffix))
+#define safe_str_client(address) \
+ safe_str_client_opts(NULL, address)
+#define safe_str(address) \
+ safe_str_opts(NULL, address)
+
+const char * safe_str_client_opts(const or_options_t *options,
+ const char *address);
+const char * safe_str_opts(const or_options_t *options,
+ const char *address);
+
int using_default_dir_authorities(const or_options_t *options);
int create_keys_directory(const or_options_t *options);
diff --git a/src/app/config/confparse.c b/src/app/config/confparse.c
index 35897935f3..8681f648da 100644
--- a/src/app/config/confparse.c
+++ b/src/app/config/confparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/config/confparse.h b/src/app/config/confparse.h
index efaa3e480a..57f1ec1762 100644
--- a/src/app/config/confparse.h
+++ b/src/app/config/confparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/config/or_options_st.h b/src/app/config/or_options_st.h
index c2bc1079a5..06e11d3c75 100644
--- a/src/app/config/or_options_st.h
+++ b/src/app/config/or_options_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -72,6 +72,9 @@ struct or_options_t {
routerset_t *ExitNodes; /**< Structure containing nicknames, digests,
* country codes and IP address patterns of ORs to
* consider as exits. */
+ routerset_t *MiddleNodes; /**< Structure containing nicknames, digests,
+ * country codes and IP address patterns of ORs to
+ * consider as middles. */
routerset_t *EntryNodes;/**< Structure containing nicknames, digests,
* country codes and IP address patterns of ORs to
* consider as entry points. */
diff --git a/src/app/config/or_state_st.h b/src/app/config/or_state_st.h
index 00968d3731..cdb9b38287 100644
--- a/src/app/config/or_state_st.h
+++ b/src/app/config/or_state_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/config/statefile.c b/src/app/config/statefile.c
index 97b96f1149..9681f6f8b3 100644
--- a/src/app/config/statefile.c
+++ b/src/app/config/statefile.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/config/statefile.h b/src/app/config/statefile.h
index 6433affa62..1950078450 100644
--- a/src/app/config/statefile.h
+++ b/src/app/config/statefile.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/main/main.c b/src/app/main/main.c
index d71e43ec30..0ffc27d456 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -22,6 +22,7 @@
#include "core/mainloop/netstatus.h"
#include "core/or/channel.h"
#include "core/or/channelpadding.h"
+#include "core/or/circuitpadding.h"
#include "core/or/channeltls.h"
#include "core/or/circuitlist.h"
#include "core/or/circuitmux_ewma.h"
@@ -645,9 +646,13 @@ tor_init(int argc, char *argv[])
/* The options are now initialised */
const or_options_t *options = get_options();
- /* Initialize channelpadding parameters to defaults until we get
- * a consensus */
+ /* Initialize channelpadding and circpad parameters to defaults
+ * until we get a consensus */
channelpadding_new_consensus_params(NULL);
+ circpad_new_consensus_params(NULL);
+
+ /* Initialize circuit padding to defaults+torrc until we get a consensus */
+ circpad_machines_init();
/* Initialize predicted ports list after loading options */
predicted_ports_init();
@@ -766,6 +771,7 @@ tor_free_all(int postfork)
dns_free_all();
clear_pending_onions();
circuit_free_all();
+ circpad_machines_free();
entry_guards_free_all();
pt_free_all();
channel_tls_free_all();
diff --git a/src/app/main/main.h b/src/app/main/main.h
index 23a436703e..bbbbf984fb 100644
--- a/src/app/main/main.h
+++ b/src/app/main/main.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/main/ntmain.c b/src/app/main/ntmain.c
index 8d2135a587..05d203b0be 100644
--- a/src/app/main/ntmain.c
+++ b/src/app/main/ntmain.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/main/ntmain.h b/src/app/main/ntmain.h
index 223d9e318b..c39386c054 100644
--- a/src/app/main/ntmain.h
+++ b/src/app/main/ntmain.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/app/main/subsysmgr.c b/src/app/main/subsysmgr.c
index abd2edd10b..e0ca3ce4df 100644
--- a/src/app/main/subsysmgr.c
+++ b/src/app/main/subsysmgr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/app/main/subsysmgr.h b/src/app/main/subsysmgr.h
index 4b3cad62ad..a5e62f71d9 100644
--- a/src/app/main/subsysmgr.h
+++ b/src/app/main/subsysmgr.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SUBSYSMGR_T
diff --git a/src/app/main/subsystem_list.c b/src/app/main/subsystem_list.c
index 9f9bf10866..3834176182 100644
--- a/src/app/main/subsystem_list.c
+++ b/src/app/main/subsystem_list.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/app/main/tor_main.c b/src/app/main/tor_main.c
index 8c497fff8a..8a887ed269 100644
--- a/src/app/main/tor_main.c
+++ b/src/app/main/tor_main.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/config/geoip b/src/config/geoip
index 7dfed43cea..a24a177e6b 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on January 3 2019 Maxmind GeoLite2 Country
+# Last updated based on February 5 2019 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -53,7 +53,7 @@
18926592,18926719,TW
18926720,18927615,SG
18927616,18929663,TW
-18929664,18931711,KR
+18929664,18931711,SG
18931712,18933759,JP
18933760,18935807,US
18935808,18939903,HK
@@ -93,55 +93,1465 @@
30408704,33554431,KR
33554432,34603007,FR
34604544,34605055,DE
+34605061,34605063,ES
+34605068,34605071,ES
+34605076,34605079,ES
+34605084,34605087,ES
+34605092,34605095,ES
+34605100,34605103,ES
+34605108,34605111,ES
+34605116,34605119,ES
+34605124,34605127,ES
+34605132,34605135,ES
+34605140,34605141,ES
+34605143,34605143,ES
+34605148,34605151,ES
+34605764,34605767,RU
+34605772,34605775,RU
+34605780,34605783,RU
+34605789,34605791,RU
+34605796,34605799,RU
+34605804,34605807,RU
+34605812,34605813,RU
+34607892,34607895,GR
+34607900,34607903,GR
+34608702,34608703,IT
+34608734,34608735,IT
+34608835,34608836,IT
+34608858,34608860,IT
+34608865,34608868,IT
+34608873,34608876,IT
+34608881,34608884,IT
+34608889,34608889,IT
34612224,34612479,AU
34612480,34612735,GB
+34615300,34615303,GB
+34615308,34615311,GB
+34615316,34615319,GB
+34615324,34615327,GB
+34615332,34615335,GB
+34615340,34615343,GB
+34615348,34615351,GB
+34615356,34615359,GB
+34615364,34615367,GB
+34615372,34615375,GB
+34615380,34615383,GB
+34615388,34615391,GB
+34615396,34615399,GB
+34615404,34615407,GB
+34615412,34615415,GB
+34615420,34615423,GB
+34615440,34615443,GB
+34615448,34615451,GB
+34615456,34615459,GB
+34615464,34615467,GB
+34615472,34615475,GB
+34615480,34615483,GB
+34615488,34615491,GB
+34615496,34615499,GB
+34615504,34615507,GB
+34615512,34615515,GB
+34615520,34615520,GB
+34615522,34615523,GB
+34615528,34615531,GB
+34615536,34615537,GB
+34618372,34618375,CZ
+34618380,34618383,CZ
+34618388,34618391,CZ
+34618396,34618398,CZ
+34618436,34618439,CZ
+34618444,34618447,CZ
+34618452,34618455,CZ
+34618460,34618463,CZ
+34618468,34618471,CZ
+34618476,34618479,CZ
+34618484,34618485,CZ
+34618487,34618487,CZ
+34618492,34618492,CZ
+34618494,34618494,CZ
+34618500,34618503,CZ
+34618508,34618511,CZ
+34618516,34618519,CZ
+34618524,34618527,CZ
+34618532,34618532,CZ
+34618669,34618671,DE
+34618676,34618679,DE
+34618684,34618687,DE
+34618692,34618695,DE
+34618700,34618703,DE
+34618708,34618711,DE
+34618716,34618719,DE
+34618724,34618727,DE
+34618732,34618735,DE
+34618740,34618740,DE
+34619396,34619399,DE
+34619404,34619407,DE
+34619412,34619415,DE
+34619420,34619423,DE
+34619428,34619431,DE
+34619436,34619439,DE
+34619444,34619447,DE
+34619452,34619455,DE
+34619652,34619655,PT
+34619660,34619663,PT
+34619668,34619669,PT
+34619844,34619847,PT
+34619852,34619855,PT
+34619860,34619863,PT
34620416,34620927,SE
34620928,34621439,IT
34621952,34622463,NL
+34625540,34625543,TR
+34625548,34625551,TR
+34625556,34625559,TR
+34625564,34625567,TR
+34625572,34625575,TR
+34625580,34625583,TR
+34625588,34625591,TR
+34625596,34625599,TR
+34625604,34625607,TR
+34625612,34625615,TR
+34625620,34625623,TR
+34625628,34625631,TR
+34625636,34625639,TR
+34625644,34625647,TR
+34625652,34625655,TR
+34625660,34625661,TR
+34628620,34628623,DE
+34628628,34628631,DE
+34628636,34628639,DE
+34628644,34628647,DE
+34628652,34628654,DE
+34628660,34628663,DE
+34628668,34628670,DE
+34628732,34628735,DE
+34628740,34628740,DE
+34628748,34628751,DE
+34628868,34628871,DE
+34628876,34628879,DE
+34628884,34628887,DE
+34628892,34628895,DE
+34628900,34628903,DE
+34628908,34628911,DE
+34628916,34628919,DE
+34628924,34628927,DE
+34628932,34628935,DE
+34628940,34628943,DE
+34628948,34628951,DE
+34628956,34628959,DE
+34628964,34628967,DE
+34628972,34628975,DE
+34628980,34628983,DE
+34629399,34629399,RU
+34629405,34629407,RU
+34629412,34629415,RU
+34629420,34629423,RU
+34629428,34629431,RU
+34629436,34629439,RU
+34629444,34629447,RU
+34629452,34629455,RU
+34629460,34629460,RU
+34630148,34630151,DE
+34630156,34630159,DE
+34630164,34630167,DE
+34630172,34630175,DE
+34630180,34630181,DE
+34630660,34630663,ES
+34630668,34630668,ES
+34630670,34630671,ES
+34630676,34630679,ES
+34630684,34630687,ES
+34630692,34630695,ES
+34630700,34630703,ES
+34630708,34630711,ES
+34630716,34630719,ES
+34630724,34630727,ES
+34630732,34630735,ES
+34630740,34630743,ES
+34630748,34630749,ES
+34630756,34630759,ES
+34630764,34630767,ES
+34630772,34630775,ES
+34630780,34630783,ES
+34630788,34630791,ES
+34630796,34630799,ES
+34630804,34630807,ES
+34630812,34630815,ES
+34630820,34630823,ES
+34632524,34632527,GB
+34632532,34632535,GB
+34632540,34632543,GB
+34632548,34632551,GB
+34632556,34632559,GB
+34632564,34632567,GB
+34632572,34632575,GB
+34632580,34632580,GB
+34632591,34632591,GB
+34633141,34633143,FR
+34633145,34633178,FR
+34635780,34635783,DE
+34635788,34635791,DE
+34635796,34635799,DE
+34635804,34635807,DE
+34635812,34635815,DE
+34635820,34635823,DE
+34635828,34635831,DE
+34635836,34635839,DE
+34635844,34635847,DE
+34635852,34635855,DE
+34635860,34635863,DE
+34635868,34635871,DE
+34635876,34635879,DE
+34635884,34635887,DE
+34635892,34635895,DE
+34635900,34635903,DE
+34635908,34635911,DE
+34635916,34635919,DE
+34635924,34635927,DE
+34635932,34635935,DE
+34635940,34635943,DE
+34635948,34635951,DE
+34635956,34635959,DE
+34635964,34635967,DE
+34635972,34635975,DE
+34635980,34635983,DE
+34635988,34635991,DE
+34635996,34635999,DE
+34636004,34636005,DE
34636800,34637311,DE
-34646528,34647551,DE
+34637575,34637575,IT
+34637580,34637581,IT
+34637583,34637583,IT
+34642284,34642310,NL
+34642312,34642315,NL
+34642317,34642317,NL
+34642319,34642321,NL
+34642323,34642357,NL
+34642436,34642439,RU
+34642444,34642447,RU
+34642452,34642455,RU
+34642460,34642461,RU
+34643478,34643479,AE
+34643484,34643487,AE
+34643492,34643495,AE
+34643500,34643503,AE
+34643508,34643511,AE
+34643516,34643519,AE
+34643524,34643527,AE
+34643532,34643535,AE
+34643540,34643543,AE
+34643548,34643549,AE
+34644524,34644527,GB
+34644532,34644535,GB
+34644540,34644543,GB
+34644548,34644551,GB
+34644556,34644559,GB
+34644564,34644567,GB
+34644572,34644575,GB
+34644580,34644583,GB
+34644588,34644591,GB
+34644596,34644599,GB
+34644604,34644607,GB
+34644612,34644615,GB
+34644620,34644623,GB
+34644628,34644631,GB
+34644636,34644639,GB
+34644644,34644647,GB
+34645334,34645337,FR
+34645342,34645345,FR
+34645350,34645353,FR
+34645358,34645361,FR
+34645366,34645369,FR
+34645374,34645377,FR
+34645382,34645385,FR
+34645391,34645393,FR
+34645398,34645401,FR
+34645406,34645409,FR
+34645414,34645417,FR
+34645422,34645425,FR
+34645430,34645432,FR
+34645438,34645441,FR
+34645446,34645449,FR
+34645454,34645457,FR
+34645462,34645465,FR
+34645470,34645473,FR
+34645478,34645478,FR
+34645548,34645551,DE
+34645556,34645559,DE
+34645564,34645567,DE
+34645572,34645575,DE
+34645580,34645583,DE
+34645588,34645591,DE
+34645596,34645599,DE
+34645604,34645607,DE
+34645764,34645767,GB
+34645772,34645775,GB
+34645780,34645783,GB
+34645788,34645791,GB
+34645796,34645799,GB
+34645804,34645807,GB
+34645812,34645815,GB
+34645820,34645823,GB
+34645828,34645831,GB
+34645836,34645839,GB
+34645844,34645847,GB
+34645852,34645855,GB
+34645862,34645863,GB
+34645868,34645871,GB
+34645876,34645879,GB
+34645884,34645887,GB
+34645892,34645895,GB
+34645900,34645901,GB
+34646528,34646709,DE
+34646710,34646713,GB
+34646714,34646717,DE
+34646718,34646721,GB
+34646722,34646725,DE
+34646726,34646729,GB
+34646730,34646733,DE
+34646734,34646737,GB
+34646738,34646741,DE
+34646742,34646745,GB
+34646746,34646749,DE
+34646750,34646753,GB
+34646754,34646757,DE
+34646758,34646761,GB
+34646762,34646765,DE
+34646766,34646768,GB
+34646769,34647139,DE
+34647140,34647143,PL
+34647144,34647147,DE
+34647148,34647151,PL
+34647152,34647155,DE
+34647156,34647159,PL
+34647160,34647163,DE
+34647164,34647167,PL
+34647168,34647171,DE
+34647172,34647175,PL
+34647176,34647179,DE
+34647180,34647183,PL
+34647184,34647187,DE
+34647188,34647191,PL
+34647192,34647195,DE
+34647196,34647199,PL
+34647200,34647203,DE
+34647204,34647207,PL
+34647208,34647551,DE
+34649348,34649351,DE
+34649356,34649359,DE
+34649364,34649367,DE
+34649372,34649375,DE
+34649380,34649383,DE
+34649389,34649390,DE
+34649396,34649399,DE
+34649404,34649407,DE
+34649412,34649415,DE
+34649452,34649455,DE
+34649460,34649463,DE
+34649468,34649468,DE
+34649470,34649471,DE
+34649476,34649479,DE
+34649484,34649487,DE
+34649492,34649495,DE
+34649500,34649503,DE
+34649508,34649509,DE
+34649511,34649511,DE
+34649517,34649519,DE
+34649524,34649526,DE
+34649532,34649535,DE
+34649540,34649543,DE
+34649548,34649551,DE
+34649556,34649559,DE
+34649564,34649567,DE
+34649572,34649575,DE
+34649861,34649863,FR
+34649869,34649871,FR
+34649876,34649879,FR
+34649884,34649887,FR
+34649892,34649895,FR
+34649900,34649903,FR
+34649908,34649911,FR
+34649916,34649919,FR
+34649924,34649927,FR
+34649932,34649935,FR
+34649941,34649943,FR
+34649948,34649951,FR
+34649956,34649959,FR
+34649964,34649965,FR
+34649967,34649967,FR
+34649973,34649975,FR
+34649980,34649983,FR
+34649990,34649991,FR
+34649996,34649999,FR
+34650004,34650007,FR
+34650012,34650014,FR
+34650020,34650023,FR
+34650028,34650031,FR
+34650036,34650039,FR
+34650044,34650047,FR
+34650052,34650055,FR
+34650060,34650063,FR
+34650068,34650071,FR
+34650076,34650079,FR
+34650084,34650085,FR
+34650741,34650743,DE
+34650748,34650751,DE
+34650756,34650759,DE
+34650764,34650767,DE
+34650772,34650775,DE
+34650780,34650783,DE
+34650788,34650791,DE
+34650796,34650799,DE
+34650804,34650807,DE
+34650812,34650812,DE
+34650861,34650863,DE
+34650868,34650868,DE
+34650884,34650887,DE
+34650892,34650895,DE
+34650900,34650903,DE
+34650908,34650911,DE
+34650916,34650919,DE
+34650924,34650927,DE
+34650932,34650932,DE
+34650934,34650935,DE
+34650940,34650943,DE
34651136,34651647,BR
+34658389,34658389,DE
+34658391,34658391,DE
+34658398,34658399,DE
+34658404,34658407,DE
+34658413,34658416,DE
+34658421,34658424,DE
+34658429,34658432,DE
+34658437,34658438,DE
+34658464,34658464,DE
+34658708,34658717,DE
+34658719,34658720,DE
+34658722,34658744,DE
+34658820,34658823,DE
+34658828,34658831,DE
+34658836,34658839,DE
+34658844,34658847,DE
+34658852,34658855,DE
+34658860,34658863,DE
+34658868,34658871,DE
+34658876,34658879,DE
+34658884,34658886,DE
+34659028,34659031,DE
+34659036,34659038,DE
34659328,34660351,GR
34673664,34674687,DE
+34677328,34677331,FR
+34677336,34677339,FR
+34677344,34677347,FR
+34677352,34677355,FR
+34677360,34677363,FR
+34677368,34677371,FR
+34677376,34677379,FR
+34677384,34677385,FR
+34678020,34678021,ES
+34678036,34678037,ES
+34678084,34678087,ES
+34678092,34678095,ES
+34678101,34678103,ES
+34678108,34678111,ES
+34678116,34678119,ES
+34678124,34678127,ES
+34678135,34678135,ES
+34678140,34678143,ES
+34678148,34678151,ES
+34678156,34678159,ES
+34678164,34678167,ES
+34678172,34678175,ES
+34678180,34678183,ES
+34678188,34678191,ES
+34678196,34678199,ES
+34678204,34678206,ES
+34678276,34678276,GB
+34678279,34678279,GB
+34678284,34678287,GB
+34678292,34678295,GB
+34678300,34678302,GB
+34678309,34678310,GB
+34678316,34678316,GB
+34678318,34678319,GB
+34678324,34678326,GB
+34678572,34678575,ES
+34678580,34678583,ES
+34678588,34678591,ES
+34678596,34678599,ES
+34678604,34678607,ES
+34678612,34678615,ES
+34678620,34678623,ES
+34678628,34678631,ES
+34678636,34678639,ES
+34678644,34678647,ES
+34678652,34678655,ES
+34678660,34678663,ES
+34678668,34678671,ES
+34678676,34678679,ES
+34678684,34678687,ES
+34678692,34678695,ES
+34678700,34678703,ES
+34678708,34678711,ES
+34678716,34678719,ES
+34678725,34678727,ES
+34678732,34678735,ES
+34678798,34678801,FR
+34678806,34678809,FR
+34678814,34678817,FR
+34678822,34678825,FR
+34678830,34678833,FR
+34678838,34678841,FR
+34678846,34678849,FR
+34678854,34678857,FR
+34678862,34678865,FR
+34678870,34678873,FR
+34678878,34678881,FR
+34678886,34678889,FR
+34678894,34678897,FR
+34678902,34678905,FR
+34678910,34678913,FR
+34678918,34678919,FR
+34678921,34678921,FR
+34679556,34679559,FR
+34679564,34679567,FR
+34679572,34679575,FR
+34679580,34679583,FR
+34679588,34679591,FR
+34679596,34679599,FR
+34679604,34679607,FR
+34679612,34679615,FR
+34679620,34679623,FR
+34679644,34679647,FR
+34679652,34679655,FR
+34679660,34679663,FR
+34679668,34679671,FR
+34679676,34679679,FR
+34679684,34679687,FR
+34679692,34679692,FR
+34699997,34699999,DE
+34700004,34700007,DE
+34700012,34700015,DE
+34700020,34700023,DE
+34700036,34700039,DE
+34700044,34700047,DE
+34700052,34700055,DE
+34700060,34700062,DE
+34700068,34700070,DE
+34700077,34700077,DE
+34721868,34721871,GB
+34721877,34721879,GB
+34721884,34721887,GB
+34721892,34721895,GB
+34721900,34721903,GB
+34721908,34721911,GB
+34721916,34721919,GB
+34721924,34721926,GB
+34721932,34721933,GB
+34721935,34721935,GB
+34721940,34721943,GB
+34721949,34721950,GB
+34721956,34721957,GB
+34721959,34721959,GB
+34721964,34721966,GB
+34721972,34721975,GB
+34721980,34721983,GB
+34721989,34721991,GB
+34721996,34721999,GB
+34722004,34722007,GB
+34722012,34722012,GB
+34722308,34722311,GB
+34722316,34722319,GB
+34722324,34722327,GB
+34722332,34722335,GB
+34722340,34722343,GB
+34722348,34722351,GB
+34722356,34722359,GB
+34722364,34722367,GB
+34722372,34722375,GB
+34722380,34722380,GB
+34722388,34722391,GB
+34722396,34722399,GB
+34722404,34722407,GB
+34722412,34722415,GB
+34722420,34722423,GB
+34722428,34722431,GB
+34722436,34722438,GB
+34722564,34722567,ES
+34722639,34722639,ES
+34722644,34722647,ES
+34722652,34722655,ES
+34722660,34722663,ES
+34722668,34722671,ES
+34722676,34722679,ES
+34722684,34722687,ES
+34722692,34722695,ES
+34722700,34722702,ES
+34722707,34722710,ES
+34722715,34722718,ES
+34722723,34722726,ES
+34722731,34722734,ES
+34722739,34722742,ES
+34722747,34722750,ES
+34722755,34722758,ES
+34722763,34722766,ES
+34722771,34722774,ES
+34724236,34724239,ES
+34724244,34724247,ES
+34724252,34724255,ES
+34724260,34724263,ES
+34724268,34724269,ES
34733056,34734079,DE
+34741509,34741509,PL
+34741511,34741511,PL
+34741516,34741519,PL
+34741524,34741524,PL
+34741526,34741527,PL
+34741533,34741534,PL
+34741540,34741543,PL
+34741548,34741551,PL
+34741557,34741558,PL
+34741567,34741567,PL
+34741572,34741575,PL
+34741581,34741581,PL
+34741583,34741583,PL
+34741588,34741589,PL
+34741591,34741591,PL
+34741597,34741599,PL
+34741604,34741606,PL
+34751013,34751015,GB
+34751021,34751023,GB
+34751028,34751031,GB
+34751036,34751039,GB
+34751044,34751047,GB
+34751052,34751054,GB
+34751060,34751061,GB
34754560,34758655,GR
+34788868,34788869,DE
+34788871,34788871,DE
+34788876,34788879,DE
+34788884,34788885,DE
+34788887,34788887,DE
+34788892,34788893,DE
+34788895,34788895,DE
+34788900,34788903,DE
+34788908,34788909,DE
+34788911,34788911,DE
+34788916,34788919,DE
+34788924,34788924,DE
+34788926,34788927,DE
+34788932,34788935,DE
+34788940,34788943,DE
+34788948,34788951,DE
+34788956,34788959,DE
+34788964,34788967,DE
+34788972,34788975,DE
+34788980,34788983,DE
+34788988,34788991,DE
+34788996,34788996,DE
+34788998,34788998,DE
+34789124,34789127,DE
+34789132,34789135,DE
+34789140,34789143,DE
+34789148,34789151,DE
+34789156,34789159,DE
+34789316,34789319,DE
+34789324,34789326,DE
+34789332,34789335,DE
+34795604,34795640,IT
34796032,34796543,NL
+34797572,34797575,GB
+34797580,34797583,GB
+34797588,34797591,GB
+34797596,34797599,GB
+34797604,34797607,GB
+34797612,34797615,GB
+34797620,34797623,GB
+34797628,34797629,GB
+34797646,34797649,GB
+34797654,34797657,GB
+34797663,34797665,GB
+34797670,34797673,GB
+34797678,34797681,GB
+34797686,34797689,GB
+34797694,34797697,GB
+34797702,34797705,GB
+34797710,34797711,GB
+34799134,34799135,IT
+34799207,34799207,IT
+34799212,34799213,IT
+34799215,34799215,IT
+34799220,34799223,IT
+34799228,34799230,IT
+34799406,34799409,IT
+34799414,34799417,IT
+34799422,34799422,IT
+34799424,34799425,IT
+34799430,34799433,IT
+34799438,34799441,IT
+34799446,34799449,IT
+34799454,34799454,IT
+34799456,34799457,IT
+34799462,34799465,IT
+34799470,34799473,IT
34803712,34807807,IT
+34812704,34812707,GR
+34812712,34812715,GR
+34812720,34812723,GR
+34812728,34812731,GR
+34812736,34812739,GR
+34812744,34812747,GR
+34812752,34812755,GR
+34812760,34812761,GR
+34824196,34824199,DE
+34824204,34824207,DE
+34824212,34824215,DE
+34824220,34824223,DE
+34824228,34824231,DE
+34824236,34824237,DE
+34824239,34824239,DE
+34824244,34824244,DE
+34824246,34824247,DE
+34824252,34824255,DE
+34824260,34824263,DE
+34824268,34824271,DE
+34824276,34824277,DE
+34824279,34824279,DE
+34824284,34824287,DE
+34824292,34824293,DE
+34824300,34824303,DE
+34824308,34824311,DE
+34824316,34824317,DE
+34824319,34824319,DE
+34824324,34824327,DE
+34824332,34824335,DE
+34824340,34824341,DE
+34824343,34824343,DE
+34824348,34824351,DE
+34824356,34824359,DE
+34824364,34824367,DE
+34824372,34824374,DE
+34824380,34824383,DE
+34824388,34824391,DE
+34824396,34824399,DE
+34824404,34824405,DE
+34824407,34824407,DE
+34824413,34824415,DE
+34824420,34824422,DE
+34824428,34824430,DE
+34824436,34824439,DE
+34824452,34824455,DE
+34824460,34824463,DE
+34824468,34824471,DE
+34824476,34824479,DE
+34824484,34824487,DE
+34824493,34824495,DE
+34824500,34824503,DE
+34824508,34824511,DE
+34824516,34824519,DE
+34824524,34824527,DE
+34824532,34824535,DE
+34824540,34824543,DE
+34824548,34824551,DE
+34824556,34824559,DE
+34824564,34824565,DE
34861056,34865151,DE
34866176,34867199,IT
+34876500,34876503,ES
+34876508,34876511,ES
+34876516,34876519,ES
+34876676,34876679,BG
+34876684,34876687,BG
+34876764,34876775,BG
34880512,34881535,DE
-34898944,34899199,HU
+34883076,34883079,GB
+34883084,34883087,GB
+34883092,34883095,GB
+34883100,34883103,GB
+34883108,34883111,GB
+34883116,34883119,GB
+34883124,34883127,GB
+34883132,34883133,GB
+34898950,34898959,DE
+34898962,34899008,DE
+34899010,34899028,DE
+34899030,34899033,DE
+34899035,34899050,DE
+34899181,34899183,DE
+34899188,34899190,DE
+34900484,34900487,DE
+34900492,34900495,DE
+34900500,34900503,DE
+34900508,34900510,DE
+34900516,34900519,DE
+34900524,34900527,DE
+34900532,34900535,DE
+34900540,34900543,DE
+34900548,34900551,DE
+34900556,34900559,DE
+34900564,34900567,DE
+34900572,34900575,DE
+34900580,34900583,DE
+34900588,34900589,DE
+34901669,34901681,DE
+34901692,34901695,DE
+34901700,34901700,DE
+34901799,34901799,DE
+34901804,34901807,DE
+34901812,34901815,DE
+34901820,34901823,DE
+34901828,34901831,DE
+34901836,34901839,DE
+34901844,34901847,DE
+34901852,34901855,DE
+34901860,34901862,DE
34910976,34911231,ES
34911232,34911487,DE
34911744,34911999,AT
34912000,34912255,GB
34912512,34912767,ES
34912768,34913279,DE
-34930688,34938879,DE
+34913928,34913929,DE
+34913935,34913938,DE
+34913943,34913946,DE
+34913951,34913954,DE
+34913960,34913962,DE
+34913967,34913970,DE
+34913975,34913978,DE
+34913983,34913986,DE
+34913991,34913994,DE
+34913999,34914001,DE
+34914007,34914010,DE
+34914015,34914018,DE
+34914023,34914026,DE
+34914031,34914034,DE
+34914039,34914041,DE
+34927364,34927364,FR
+34927366,34927410,FR
+34927933,34927935,SE
+34927940,34927943,SE
+34927948,34927948,SE
+34927975,34927975,SE
+34927980,34927983,SE
+34927988,34927991,SE
+34928002,34928003,SE
+34928005,34928005,SE
+34928010,34928013,SE
+34928018,34928019,SE
+34928764,34928767,DE
+34928772,34928775,DE
+34928780,34928783,DE
+34928788,34928791,DE
+34928796,34928799,DE
+34928804,34928807,DE
+34928812,34928815,DE
+34928820,34928823,DE
+34928828,34928831,DE
+34928836,34928836,DE
+34928965,34928968,AE
+34928973,34928976,AE
+34928981,34928984,AE
+34928989,34928992,AE
+34928997,34929000,AE
+34929005,34929008,AE
+34929013,34929016,AE
+34929021,34929024,AE
+34929030,34929032,AE
+34929037,34929040,AE
+34929046,34929048,AE
+34929053,34929053,AE
+34929055,34929056,AE
+34929061,34929063,AE
+34929669,34929669,IT
+34929676,34929679,IT
+34929684,34929687,IT
+34929692,34929695,IT
+34929700,34929703,IT
+34929708,34929709,IT
+34929711,34929711,IT
+34929716,34929719,IT
+34929725,34929725,IT
+34929727,34929728,IT
+34929733,34929736,IT
+34929741,34929744,IT
+34929749,34929749,IT
+34929751,34929752,IT
+34929758,34929760,IT
+34929815,34929815,IT
+34929870,34929872,IT
+34929878,34929879,IT
+34929885,34929888,IT
+34929893,34929893,IT
+34929895,34929896,IT
+34929901,34929904,IT
+34929910,34929912,IT
+34930434,34930437,RU
+34930443,34930445,RU
+34930450,34930451,RU
+34930453,34930453,RU
+34930458,34930461,RU
+34930466,34930469,RU
+34930474,34930477,RU
+34930482,34930485,RU
+34930490,34930490,RU
+34930688,34933523,DE
+34933524,34933525,IT
+34933526,34933526,DE
+34933527,34933527,IT
+34933528,34933531,DE
+34933532,34933535,IT
+34933536,34933540,DE
+34933541,34933541,IT
+34933542,34933542,DE
+34933543,34933543,IT
+34933544,34933547,DE
+34933548,34933550,IT
+34933551,34933565,DE
+34933566,34933568,IT
+34933569,34933572,DE
+34933573,34933576,IT
+34933577,34933580,DE
+34933581,34933584,IT
+34933585,34933588,DE
+34933589,34933592,IT
+34933593,34933596,DE
+34933597,34933599,IT
+34933600,34933604,DE
+34933605,34933606,IT
+34933607,34933607,DE
+34933608,34933608,IT
+34933609,34933613,DE
+34933614,34933615,IT
+34933616,34933897,DE
+34933898,34933901,IT
+34933902,34933905,DE
+34933906,34933909,IT
+34933910,34933913,DE
+34933914,34933917,IT
+34933918,34933921,DE
+34933922,34933925,IT
+34933926,34933929,DE
+34933930,34933933,IT
+34933934,34933937,DE
+34933938,34933941,IT
+34933942,34933945,DE
+34933946,34933949,IT
+34933950,34933953,DE
+34933954,34933955,IT
+34933956,34938879,DE
34938880,34947071,FR
+34948428,34948431,GR
+34948436,34948439,GR
+34948444,34948447,GR
+34948452,34948452,GR
+34948484,34948487,GR
+34948492,34948495,GR
+34948500,34948503,GR
+34948508,34948509,GR
+34948511,34948511,GR
+34950500,34950501,DE
+34950503,34950503,DE
+34950508,34950511,DE
+34950516,34950519,DE
+34951044,34951047,DE
+34951052,34951055,DE
+34951060,34951060,DE
+34951062,34951063,DE
+34951068,34951071,DE
+34951076,34951079,DE
+34951084,34951087,DE
+34951106,34951108,DE
+34951122,34951125,DE
+34951130,34951130,DE
+34951261,34951263,DE
+34951268,34951271,DE
+34951276,34951279,DE
+34951284,34951287,DE
+34951292,34951294,DE
+34952526,34952527,FR
+34952532,34952534,FR
+34952540,34952543,FR
+34952580,34952583,FR
+34952588,34952591,FR
+34952596,34952599,FR
+34952604,34952607,FR
+34952612,34952615,FR
+34952620,34952623,FR
+34952628,34952628,FR
34953216,34954751,AT
-34955264,34959359,AT
+34955264,34955267,AT
+34955268,34955271,SE
+34955272,34955275,AT
+34955276,34955279,SE
+34955280,34955283,AT
+34955284,34955287,SE
+34955288,34955291,AT
+34955292,34955295,SE
+34955296,34955299,AT
+34955300,34955303,SE
+34955304,34955307,AT
+34955308,34955311,SE
+34955312,34955315,AT
+34955316,34955319,SE
+34955320,34955323,AT
+34955324,34955327,SE
+34955328,34955331,AT
+34955332,34955335,SE
+34955336,34955339,AT
+34955340,34955343,SE
+34955344,34955347,AT
+34955348,34955351,SE
+34955352,34955355,AT
+34955356,34955359,SE
+34955360,34955363,AT
+34955364,34955367,SE
+34955368,34955371,AT
+34955372,34955375,SE
+34955376,34955819,AT
+34955820,34955823,ZA
+34955824,34955827,AT
+34955828,34955831,ZA
+34955832,34955835,AT
+34955836,34955839,ZA
+34955840,34955843,AT
+34955844,34955847,ZA
+34955848,34955851,AT
+34955852,34955855,ZA
+34955856,34955859,AT
+34955860,34955860,ZA
+34955861,34956035,AT
+34956036,34956039,SE
+34956040,34956043,AT
+34956044,34956045,SE
+34956046,34956046,AT
+34956047,34956047,SE
+34956048,34956051,AT
+34956052,34956055,SE
+34956056,34956059,AT
+34956060,34956063,SE
+34956064,34956067,AT
+34956068,34956071,SE
+34956072,34956075,AT
+34956076,34956079,SE
+34956080,34956083,AT
+34956084,34956087,SE
+34956088,34956091,AT
+34956092,34956094,SE
+34956095,34956099,AT
+34956100,34956103,SE
+34956104,34959359,AT
34959360,34963455,NL
-34992384,34992639,NL
+34974852,34974855,AT
+34974860,34974863,AT
+34974868,34974871,AT
+34974876,34974879,AT
+34974884,34974887,AT
+34974892,34974895,AT
+34974900,34974903,AT
+34989828,34989831,AE
+34989836,34989839,AE
+34989844,34989847,AE
+34989852,34989853,AE
+34989855,34989855,AE
+34989860,34989863,AE
+34989869,34989871,AE
+34989876,34989879,AE
+34989884,34989887,AE
+34989908,34989911,AE
+34989916,34989916,AE
+34989918,34989919,AE
+34989924,34989927,AE
+34989932,34989934,AE
+34989940,34989943,AE
+34989948,34989951,AE
+34989956,34989956,AE
+34992155,34992175,SE
+34992177,34992181,SE
+34992183,34992190,SE
+34992247,34992250,SE
+34992255,34992258,SE
+34992263,34992266,SE
+34992271,34992274,SE
+34992279,34992280,SE
+34992282,34992282,SE
+34992287,34992290,SE
+34992295,34992298,SE
+34992303,34992306,SE
+34992311,34992314,SE
+34992384,34992413,NL
+34992414,34992415,SE
+34992416,34992419,NL
+34992420,34992423,SE
+34992424,34992427,NL
+34992428,34992431,SE
+34992432,34992435,NL
+34992436,34992439,SE
+34992440,34992443,NL
+34992444,34992447,SE
+34992448,34992451,NL
+34992452,34992455,SE
+34992456,34992459,NL
+34992460,34992463,SE
+34992464,34992467,NL
+34992468,34992471,SE
+34992472,34992475,NL
+34992476,34992479,SE
+34992480,34992483,NL
+34992484,34992485,SE
+34992486,34992639,NL
+34992900,34992914,NL
+34992916,34992926,NL
+34993068,34993080,NL
+34993082,34993087,NL
+34993089,34993090,NL
+34993092,34993096,NL
+34993098,34993103,NL
+34993108,34993112,NL
+34993114,34993144,NL
34993152,34993663,FR
34993664,34993919,AT
34993920,34994175,DE
34994176,34995711,FR
34995968,34996223,NL
+34998896,34998899,DE
+34998904,34998907,DE
+34998912,34998915,DE
+34998920,34998923,DE
+34998928,34998931,DE
+34998936,34998939,DE
+34998944,34998947,DE
+34998952,34998955,DE
+34998960,34998963,DE
+34998968,34998971,DE
+34998976,34998979,DE
+34998984,34998986,DE
+34999019,34999022,DE
+34999027,34999030,DE
+34999043,34999046,DE
+34999051,34999054,DE
+34999059,34999062,DE
+34999067,34999070,DE
+34999075,34999077,DE
34999296,35001343,GB
+35002220,35002220,FR
+35002222,35002223,FR
+35002228,35002231,FR
+35002244,35002247,FR
+35002252,35002255,FR
+35002260,35002263,FR
+35002268,35002271,FR
+35002276,35002279,FR
+35002284,35002284,FR
+35002286,35002287,FR
+35002293,35002294,FR
+35004164,35004167,SE
+35004172,35004175,SE
+35004180,35004183,SE
+35004188,35004191,SE
+35004196,35004197,SE
+35004199,35004199,SE
+35004204,35004207,SE
+35004212,35004215,SE
+35004220,35004223,SE
+35004228,35004231,SE
+35004237,35004239,SE
+35004244,35004247,SE
+35004252,35004255,SE
+35004260,35004263,SE
+35004268,35004271,SE
+35004276,35004279,SE
+35004284,35004287,SE
+35004292,35004295,SE
+35004300,35004303,SE
+35004308,35004311,SE
+35004324,35004327,SE
+35004332,35004335,SE
+35004340,35004343,SE
+35004348,35004351,SE
+35004356,35004359,SE
+35004364,35004367,SE
+35004372,35004375,SE
+35004380,35004380,SE
35008512,35009023,FR
+35009172,35009175,DE
+35009180,35009183,DE
+35009188,35009189,DE
+35009191,35009191,DE
+35009196,35009199,DE
+35009204,35009204,DE
+35009206,35009207,DE
+35009212,35009215,DE
+35009220,35009221,DE
+35009262,35009263,DE
+35009268,35009271,DE
+35009636,35009654,PL
35010304,35010559,BE
35010560,35011583,FR
35011584,35011839,SE
-35020800,35037183,GB
+35011924,35011952,DE
+35011955,35011955,DE
+35011959,35011960,DE
+35012356,35012359,FI
+35012364,35012367,FI
+35012372,35012375,FI
+35012380,35012380,FI
+35020800,35025283,GB
+35025284,35025287,FR
+35025288,35025291,GB
+35025292,35025292,FR
+35025293,35025293,GB
+35025294,35025295,FR
+35025296,35025300,GB
+35025301,35025303,FR
+35025304,35025307,GB
+35025308,35025311,FR
+35025312,35025315,GB
+35025316,35025319,FR
+35025320,35026131,GB
+35026132,35026135,DE
+35026136,35026139,GB
+35026140,35026143,DE
+35026144,35026147,GB
+35026148,35026151,DE
+35026152,35026155,GB
+35026156,35026159,DE
+35026160,35026163,GB
+35026164,35026167,DE
+35026168,35026179,GB
+35026180,35026182,DE
+35026183,35026187,GB
+35026188,35026191,DE
+35026192,35026196,GB
+35026197,35026199,DE
+35026200,35026203,GB
+35026204,35026207,DE
+35026208,35026211,GB
+35026212,35026212,DE
+35026213,35026219,GB
+35026220,35026223,DE
+35026224,35026227,GB
+35026228,35026231,DE
+35026232,35026235,GB
+35026236,35026239,DE
+35026240,35026243,GB
+35026244,35026247,DE
+35026248,35026251,GB
+35026252,35026255,DE
+35026256,35026259,GB
+35026260,35026263,DE
+35026264,35026267,GB
+35026268,35026270,DE
+35026271,35028677,GB
+35028678,35028679,ES
+35028680,35028683,GB
+35028684,35028687,ES
+35028688,35028691,GB
+35028692,35028695,ES
+35028696,35028699,GB
+35028700,35028703,ES
+35028704,35028707,GB
+35028708,35028711,ES
+35028712,35028715,GB
+35028716,35028719,ES
+35028720,35028723,GB
+35028724,35028727,ES
+35028728,35033187,GB
+35033188,35033190,DE
+35033191,35033213,GB
+35033214,35033215,DE
+35033216,35033219,GB
+35033220,35033223,DE
+35033224,35033227,GB
+35033228,35033231,DE
+35033232,35033235,GB
+35033236,35033239,DE
+35033240,35033243,GB
+35033244,35033247,DE
+35033248,35033251,GB
+35033252,35033255,DE
+35033256,35033259,GB
+35033260,35033263,DE
+35033264,35033267,GB
+35033268,35033271,DE
+35033272,35033275,GB
+35033276,35033279,DE
+35033280,35033283,GB
+35033284,35033287,DE
+35033288,35033291,GB
+35033292,35033295,DE
+35033296,35033299,GB
+35033300,35033303,DE
+35033304,35033307,GB
+35033308,35033311,DE
+35033312,35033315,GB
+35033316,35033319,DE
+35033320,35033323,GB
+35033324,35033327,DE
+35033328,35033331,GB
+35033332,35033333,DE
+35033334,35033347,GB
+35033348,35033351,ES
+35033352,35033355,GB
+35033356,35033359,ES
+35033360,35033363,GB
+35033364,35033367,ES
+35033368,35033371,GB
+35033372,35033375,ES
+35033376,35033379,GB
+35033380,35033382,ES
+35033383,35037183,GB
35037184,35045375,FR
-35053568,35054335,FR
+35053568,35053827,FR
+35053828,35053831,GB
+35053832,35053835,FR
+35053836,35053839,GB
+35053840,35053843,FR
+35053844,35053845,GB
+35053846,35053846,FR
+35053847,35053847,GB
+35053848,35053851,FR
+35053852,35053855,GB
+35053856,35053859,FR
+35053860,35053861,GB
+35053862,35053867,FR
+35053868,35053871,GB
+35053872,35053875,FR
+35053876,35053879,GB
+35053880,35053883,FR
+35053884,35053887,GB
+35053888,35053901,FR
+35053902,35053905,GB
+35053906,35053909,FR
+35053910,35053911,GB
+35053912,35053912,FR
+35053913,35053913,GB
+35053914,35053917,FR
+35053918,35053918,GB
+35053919,35053920,FR
+35053921,35053921,GB
+35053922,35053928,FR
+35053929,35053929,GB
+35053930,35053933,FR
+35053934,35053937,GB
+35053938,35053941,FR
+35053942,35053943,GB
+35053944,35053950,FR
+35053951,35053953,GB
+35053954,35053957,FR
+35053958,35053961,GB
+35053962,35053965,FR
+35053966,35053969,GB
+35053970,35053973,FR
+35053974,35053975,GB
+35053976,35053976,FR
+35053977,35053977,GB
+35053978,35053981,FR
+35053982,35053985,GB
+35053986,35053989,FR
+35053990,35053991,GB
+35053992,35053992,FR
+35053993,35053993,GB
+35053994,35053997,FR
+35053998,35054000,GB
+35054001,35054335,FR
35054336,35054591,GB
+35054596,35054598,GB
+35054604,35054607,GB
+35054612,35054615,GB
+35054620,35054623,GB
+35054628,35054631,GB
+35054636,35054639,GB
+35054644,35054647,GB
+35054652,35054654,GB
+35054668,35054671,GB
+35054676,35054679,GB
+35054684,35054687,GB
+35054692,35054695,GB
+35054700,35054703,GB
+35054708,35054711,GB
+35054716,35054719,GB
+35054724,35054727,GB
+35054732,35054735,GB
35055104,35055359,ES
+35058373,35058376,DE
+35058381,35058384,DE
+35058389,35058390,DE
35059200,35059711,GB
35060736,35061247,GB
35061248,35061759,FR
+35083268,35083271,SE
+35083276,35083279,SE
+35083284,35083287,SE
+35083292,35083295,SE
+35083300,35083303,SE
+35083308,35083311,SE
+35083316,35083319,SE
+35083324,35083327,SE
+35083332,35083335,SE
+35083340,35083343,SE
+35083348,35083351,SE
+35083356,35083356,SE
+35083397,35083397,SE
+35083402,35083405,SE
+35083410,35083413,SE
+35083418,35083421,SE
+35083426,35083429,SE
+35083434,35083437,SE
+35083442,35083445,SE
+35083450,35083453,SE
+35083458,35083460,SE
+35083466,35083469,SE
+35083474,35083477,SE
+35083482,35083485,SE
+35083490,35083493,SE
+35083498,35083501,SE
+35083506,35083508,SE
+35085316,35085319,FR
+35085324,35085327,FR
+35085332,35085335,FR
+35085340,35085343,FR
+35085348,35085351,FR
+35085356,35085359,FR
+35085364,35085367,FR
+35085372,35085375,FR
+35086596,35086597,AT
+35086620,35086620,AT
+35086653,35086654,AT
+35086662,35086663,AT
+35086668,35086671,AT
+35086676,35086679,AT
+35086684,35086687,AT
+35086692,35086695,AT
+35086700,35086703,AT
+35086708,35086711,AT
+35086716,35086719,AT
35090432,35094527,GR
+35105796,35105799,DK
+35105804,35105807,DK
+35105812,35105815,DK
+35105820,35105823,DK
+35105828,35105831,DK
+35105836,35105839,DK
+35105844,35105847,DK
+35105852,35105855,DK
+35105860,35105863,DK
+35105868,35105871,DK
+35105876,35105879,DK
+35105884,35105887,DK
+35105892,35105895,DK
+35105900,35105903,DK
+35105908,35105908,DK
+35105910,35105911,DK
+35105916,35105919,DK
+35105924,35105927,DK
+35105932,35105935,DK
+35105940,35105943,DK
+35105948,35105951,DK
+35105956,35105959,DK
+35105964,35105967,DK
+35105972,35105975,DK
+35105980,35105983,DK
35127296,35651583,GB
35651584,36700159,IT
36700160,36962303,AE
@@ -149,11 +1559,11 @@
37486592,37748735,RU
37748736,38066175,SE
38066176,38066687,DK
-38066688,38107135,SE
-38107136,38107647,DK
-38107648,38128895,SE
+38066688,38128895,SE
38128896,38129151,DK
-38129152,38273023,SE
+38129152,38193407,SE
+38193408,38193663,DK
+38193664,38273023,SE
38273024,38797311,KZ
38797312,39059455,PT
39059456,39321599,GR
@@ -196,7 +1606,11 @@
68089632,68089663,CA
68089664,68169727,US
68169728,68171775,CA
-68171776,68204031,US
+68171776,68194815,US
+68194816,68194819,CA
+68194820,68194823,US
+68194824,68195071,CA
+68195072,68204031,US
68204032,68204036,CU
68204037,68204037,US
68204038,68204159,CU
@@ -206,9 +1620,9 @@
68978688,68980735,CA
68980736,71670208,US
71670209,71670209,NL
-71670210,72234031,US
-72234032,72234047,CA
-72234048,83886079,US
+71670210,72233983,US
+72233984,72234239,CA
+72234240,83886079,US
83886080,83951615,SY
83951616,83959807,UA
83959808,83961855,ES
@@ -271,7 +1685,9 @@
84427776,84428287,LU
84428288,84428799,JP
84428800,84432895,RU
-84432896,84433919,NL
+84432896,84433407,NL
+84433408,84433663,RU
+84433664,84433919,NL
84433920,84434943,RU
84434944,84443135,IT
84443136,84451327,LB
@@ -314,9 +1730,7 @@
84600832,84602879,GB
84602880,84606975,AZ
84606976,84609023,AT
-84609024,84611263,GB
-84611264,84611327,IQ
-84611328,84614215,GB
+84609024,84614215,GB
84614216,84614223,US
84614224,84615167,GB
84615168,84617215,IT
@@ -565,13 +1979,15 @@
86449364,86449367,DE
86449368,86449379,FR
86449380,86449383,FI
-86449384,86449387,FR
+86449384,86449387,PT
86449388,86449391,FI
86449392,86449399,FR
86449400,86449403,PL
86449404,86449499,FR
86449500,86449503,ES
-86449504,86449675,FR
+86449504,86449659,FR
+86449660,86449663,BE
+86449664,86449675,FR
86449676,86449679,PT
86449680,86449727,FR
86449728,86449759,PL
@@ -664,7 +2080,9 @@
86454888,86454895,FR
86454896,86454899,PL
86454900,86454903,GB
-86454904,86455591,FR
+86454904,86455199,FR
+86455200,86455203,GB
+86455204,86455591,FR
86455592,86455595,NL
86455596,86455623,FR
86455624,86455624,DE
@@ -680,9 +2098,7 @@
86456352,86456367,CH
86456368,86456371,FR
86456372,86456375,ES
-86456376,86456383,FR
-86456384,86456415,PL
-86456416,86456639,FR
+86456376,86456639,FR
86456640,86456655,PL
86456656,86456671,IE
86456672,86456943,FR
@@ -730,7 +2146,9 @@
86466720,86466735,PL
86466736,86466943,FR
86466944,86466959,DE
-86466960,86467207,FR
+86466960,86466963,FR
+86466964,86466967,DE
+86466968,86467207,FR
86467208,86467211,IE
86467212,86467263,FR
86467264,86467279,PL
@@ -843,7 +2261,9 @@
86497280,86499327,NL
86499328,86503423,FR
86503424,86505471,DE
-86505472,86507519,GB
+86505472,86507007,GB
+86507008,86507263,PK
+86507264,86507519,GB
86507520,86573055,ES
86573056,86638591,SA
86638592,86671359,RU
@@ -875,8 +2295,7 @@
86794240,86795775,DE
86795776,86796287,NL
86796288,86797311,US
-86797312,86797327,PY
-86797328,86798335,DE
+86797312,86798335,DE
86798336,86802431,CH
86802432,86804479,GE
86804480,86806527,DK
@@ -903,7 +2322,7 @@
86850560,86851327,NL
86851328,86851583,CZ
86851584,86855679,NL
-86855680,86856703,UA
+86855680,86856703,RU
86856704,86858751,NL
86858752,86859775,RU
86859776,86863871,DE
@@ -919,9 +2338,7 @@
86900736,87031807,TR
87031808,87293951,FR
87293952,87359487,IR
-87359488,87360543,ES
-87360544,87360575,NL
-87360576,87361535,ES
+87359488,87361535,ES
87361536,87363583,CZ
87363584,87367679,RU
87367680,87375871,IR
@@ -951,9 +2368,9 @@
87601152,87621631,DE
87621632,87623679,LB
87623680,87625727,KG
-87625728,87626880,NL
-87626881,87626881,GB
-87626882,87627775,NL
+87625728,87626751,NL
+87626752,87627007,GB
+87627008,87627775,NL
87627776,87629823,ES
87629824,87631871,IR
87631872,87633919,DE
@@ -964,18 +2381,20 @@
87642112,87646207,GB
87646208,87646463,FR
87646464,87646975,RE
-87646976,87647103,FR
-87647104,87649023,RE
-87649024,87649279,FR
-87649280,87649535,RE
-87649536,87650047,FR
-87650048,87650815,RE
+87646976,87647231,FR
+87647232,87648511,RE
+87648512,87648767,FR
+87648768,87649791,RE
+87649792,87650047,FR
+87650048,87650303,RE
+87650304,87650559,FR
+87650560,87650815,RE
87650816,87651071,FR
87651072,87651839,RE
-87651840,87652223,FR
-87652224,87652863,RE
-87652864,87653119,FR
-87653120,87653375,RE
+87651840,87652351,FR
+87652352,87652607,RE
+87652608,87652863,FR
+87652864,87653375,RE
87653376,87653631,FR
87653632,87653887,RE
87653888,87654143,FR
@@ -1016,7 +2435,8 @@
87783424,87793663,RU
87793664,87795711,BA
87795712,87797759,ES
-87797760,87801855,CZ
+87797760,87798783,RU
+87798784,87801855,CZ
87801856,87818239,RU
87818240,87883775,PL
87883776,87885823,IT
@@ -1041,11 +2461,8 @@
87947264,87949311,NL
87949312,87954431,GB
87954432,87954687,BE
-87954688,87954823,AU
-87954824,87954824,GB
-87954825,87955455,AU
-87955456,87957503,GB
-87957504,87957759,ES
+87954688,87955455,AU
+87955456,87957759,GB
87957760,87958015,IN
87958016,87958023,SG
87958024,87958031,IN
@@ -1067,145 +2484,253 @@
87959548,87959551,NL
87959552,87960063,DE
87960064,87960575,GB
-87960576,87961583,US
-87961584,87961591,CA
+87960576,87961584,US
+87961585,87961587,CA
+87961588,87961588,US
+87961589,87961591,CA
87961592,87962367,US
87962368,87962623,BR
87962624,87963647,CZ
-87963648,87963651,US
-87963652,87963655,AS
-87963656,87963659,AI
-87963660,87963663,AG
-87963664,87963667,AR
-87963668,87963671,AW
-87963672,87963675,BS
-87963676,87963679,BB
-87963680,87963683,BZ
-87963684,87963687,BM
-87963688,87963691,BO
-87963692,87963695,VG
-87963696,87963699,KY
-87963700,87963703,CL
-87963704,87963707,CN
-87963708,87963711,CO
-87963712,87963715,CK
-87963716,87963719,CR
-87963720,87963723,CU
-87963724,87963727,DM
-87963728,87963731,DO
-87963732,87963735,EC
-87963736,87963739,SV
-87963740,87963743,FK
-87963744,87963747,FJ
-87963748,87963751,GD
-87963752,87963755,GP
-87963756,87963759,GU
-87963760,87963763,GT
-87963764,87963767,GY
-87963768,87963771,HT
-87963772,87963775,HN
-87963776,87963779,JM
-87963780,87963783,KI
-87963784,87963787,MS
-87963788,87963791,NR
-87963792,87963795,NC
-87963796,87963799,NI
-87963800,87963803,NU
-87963804,87963807,NF
+87963648,87963652,US
+87963653,87963655,AS
+87963656,87963656,US
+87963657,87963659,AI
+87963660,87963660,US
+87963661,87963663,AG
+87963664,87963664,US
+87963665,87963667,AR
+87963668,87963668,US
+87963669,87963671,AW
+87963672,87963672,US
+87963673,87963675,BS
+87963676,87963676,US
+87963677,87963679,BB
+87963680,87963680,US
+87963681,87963683,BZ
+87963684,87963684,US
+87963685,87963687,BM
+87963688,87963688,US
+87963689,87963691,BO
+87963692,87963692,US
+87963693,87963695,VG
+87963696,87963696,US
+87963697,87963699,KY
+87963700,87963700,US
+87963701,87963703,CL
+87963704,87963708,US
+87963709,87963711,CO
+87963712,87963712,US
+87963713,87963715,CK
+87963716,87963716,US
+87963717,87963719,CR
+87963720,87963720,US
+87963721,87963723,CU
+87963724,87963724,US
+87963725,87963727,DM
+87963728,87963728,US
+87963729,87963731,DO
+87963732,87963732,US
+87963733,87963735,EC
+87963736,87963736,US
+87963737,87963739,SV
+87963740,87963740,US
+87963741,87963743,FK
+87963744,87963744,US
+87963745,87963747,FJ
+87963748,87963748,US
+87963749,87963751,GD
+87963752,87963752,US
+87963753,87963755,GP
+87963756,87963756,US
+87963757,87963759,GU
+87963760,87963760,US
+87963761,87963763,GT
+87963764,87963764,US
+87963765,87963767,GY
+87963768,87963768,US
+87963769,87963771,HT
+87963772,87963772,US
+87963773,87963775,HN
+87963776,87963776,US
+87963777,87963779,JM
+87963780,87963780,US
+87963781,87963783,KI
+87963784,87963784,US
+87963785,87963787,MS
+87963788,87963788,US
+87963789,87963791,NR
+87963792,87963792,US
+87963793,87963795,NC
+87963796,87963796,US
+87963797,87963799,NI
+87963800,87963800,US
+87963801,87963803,NU
+87963804,87963804,US
+87963805,87963807,NF
87963808,87963808,US
87963809,87963811,KP
-87963812,87963815,PW
-87963816,87963819,PA
-87963820,87963823,PG
-87963824,87963827,PY
-87963828,87963831,PE
-87963832,87963835,PH
-87963836,87963839,PN
-87963840,87963843,PR
-87963844,87963847,KN
-87963848,87963851,LC
-87963852,87963855,VC
-87963856,87963859,WS
-87963860,87963863,SB
-87963864,87963867,SR
-87963868,87963871,SZ
-87963872,87963875,TK
-87963876,87963879,TO
-87963880,87963883,TT
-87963884,87963887,TC
-87963888,87963891,TV
-87963892,87963895,UY
-87963896,87963911,US
-87963912,87963915,DE
-87963916,87963955,US
-87963956,87963959,CA
-87963960,87963963,GB
-87963964,87963975,US
-87963976,87963976,PR
-87963977,87963999,US
-87964000,87964003,VU
-87964004,87964007,VE
-87964008,87964015,US
-87964016,87964019,IN
-87964020,87964163,US
-87964164,87964167,AS
-87964168,87964171,AI
-87964172,87964175,AG
-87964176,87964179,AR
-87964180,87964183,AW
-87964184,87964187,BS
-87964188,87964191,BB
-87964192,87964195,BZ
-87964196,87964199,BM
-87964200,87964203,BO
-87964204,87964207,VG
-87964208,87964211,KY
-87964212,87964215,CL
-87964216,87964219,CO
-87964220,87964223,CK
-87964224,87964227,CR
-87964228,87964231,CU
-87964232,87964235,DM
-87964236,87964239,DO
-87964240,87964243,EC
-87964244,87964247,SV
-87964248,87964251,FK
-87964252,87964255,FJ
-87964256,87964259,GD
-87964260,87964263,GP
-87964264,87964267,GT
-87964268,87964271,GY
-87964272,87964275,HT
-87964276,87964279,HN
-87964280,87964283,JM
-87964284,87964287,KI
-87964288,87964291,MS
-87964292,87964295,NR
-87964296,87964299,NC
-87964300,87964303,NI
-87964304,87964307,NU
-87964308,87964311,NF
-87964312,87964315,PA
-87964316,87964319,PY
-87964320,87964323,PE
-87964324,87964327,PN
-87964328,87964331,PR
-87964332,87964335,KN
-87964336,87964339,LC
-87964340,87964343,PM
-87964344,87964347,VC
-87964348,87964351,WS
-87964352,87964355,SB
-87964356,87964359,SR
-87964360,87964363,SZ
-87964364,87964367,TK
-87964368,87964371,TO
-87964372,87964375,TT
-87964376,87964379,TC
-87964380,87964383,TV
-87964384,87964387,UY
-87964388,87964403,US
-87964404,87964407,DE
+87963812,87963812,US
+87963813,87963815,PW
+87963816,87963816,US
+87963817,87963819,PA
+87963820,87963820,US
+87963821,87963823,PG
+87963824,87963824,US
+87963825,87963827,PY
+87963828,87963828,US
+87963829,87963831,PE
+87963832,87963832,US
+87963833,87963835,PH
+87963836,87963836,US
+87963837,87963839,PN
+87963840,87963840,US
+87963841,87963843,PR
+87963844,87963844,US
+87963845,87963847,KN
+87963848,87963848,US
+87963849,87963851,LC
+87963852,87963852,US
+87963853,87963855,VC
+87963856,87963856,US
+87963857,87963859,WS
+87963860,87963860,US
+87963861,87963863,SB
+87963864,87963864,US
+87963865,87963867,SR
+87963868,87963868,US
+87963869,87963871,SZ
+87963872,87963872,US
+87963873,87963875,TK
+87963876,87963876,US
+87963877,87963879,TO
+87963880,87963880,US
+87963881,87963883,TT
+87963884,87963884,US
+87963885,87963887,TC
+87963888,87963888,US
+87963889,87963891,TV
+87963892,87963892,US
+87963893,87963895,UY
+87963896,87963912,US
+87963913,87963915,DE
+87963916,87963956,US
+87963957,87963959,CA
+87963960,87963960,US
+87963961,87963963,GB
+87963964,87964000,US
+87964001,87964003,VU
+87964004,87964004,US
+87964005,87964007,VE
+87964008,87964164,US
+87964165,87964167,AS
+87964168,87964168,US
+87964169,87964171,AI
+87964172,87964172,US
+87964173,87964175,AG
+87964176,87964176,US
+87964177,87964179,AR
+87964180,87964180,US
+87964181,87964183,AW
+87964184,87964184,US
+87964185,87964187,BS
+87964188,87964188,US
+87964189,87964191,BB
+87964192,87964192,US
+87964193,87964195,BZ
+87964196,87964196,US
+87964197,87964199,BM
+87964200,87964200,US
+87964201,87964203,BO
+87964204,87964204,US
+87964205,87964207,VG
+87964208,87964208,US
+87964209,87964211,KY
+87964212,87964212,US
+87964213,87964215,CL
+87964216,87964216,US
+87964217,87964219,CO
+87964220,87964220,US
+87964221,87964223,CK
+87964224,87964224,US
+87964225,87964227,CR
+87964228,87964228,US
+87964229,87964231,CU
+87964232,87964232,US
+87964233,87964235,DM
+87964236,87964236,US
+87964237,87964239,DO
+87964240,87964240,US
+87964241,87964243,EC
+87964244,87964244,US
+87964245,87964247,SV
+87964248,87964248,US
+87964249,87964251,FK
+87964252,87964252,US
+87964253,87964255,FJ
+87964256,87964256,US
+87964257,87964259,GD
+87964260,87964260,US
+87964261,87964263,GP
+87964264,87964264,US
+87964265,87964267,GT
+87964268,87964268,US
+87964269,87964271,GY
+87964272,87964272,US
+87964273,87964275,HT
+87964276,87964276,US
+87964277,87964279,HN
+87964280,87964280,US
+87964281,87964283,JM
+87964284,87964284,US
+87964285,87964287,KI
+87964288,87964288,US
+87964289,87964291,MS
+87964292,87964292,US
+87964293,87964295,NR
+87964296,87964296,US
+87964297,87964299,NC
+87964300,87964300,US
+87964301,87964303,NI
+87964304,87964304,US
+87964305,87964307,NU
+87964308,87964308,US
+87964309,87964311,NF
+87964312,87964312,US
+87964313,87964315,PA
+87964316,87964316,US
+87964317,87964319,PY
+87964320,87964320,US
+87964321,87964323,PE
+87964324,87964324,US
+87964325,87964327,PN
+87964328,87964328,US
+87964329,87964331,PR
+87964332,87964332,US
+87964333,87964335,KN
+87964336,87964336,US
+87964337,87964339,LC
+87964340,87964340,US
+87964341,87964343,PM
+87964344,87964344,US
+87964345,87964347,VC
+87964348,87964348,US
+87964349,87964351,WS
+87964352,87964352,US
+87964353,87964355,SB
+87964356,87964356,US
+87964357,87964359,SR
+87964360,87964360,US
+87964361,87964363,SZ
+87964364,87964372,US
+87964373,87964375,TT
+87964376,87964376,US
+87964377,87964379,TC
+87964380,87964380,US
+87964381,87964383,TV
+87964384,87964384,US
+87964385,87964387,UY
+87964388,87964404,US
+87964405,87964407,DE
87964408,87964447,US
87964448,87964451,CA
87964452,87964455,GB
@@ -1615,7 +3140,7 @@
90719488,90719999,SE
90720000,90720255,GB
90720256,90721279,TR
-90721280,90722303,DE
+90721280,90722303,US
90722304,90724351,FI
90724352,90726399,CH
90726400,90728447,FR
@@ -1858,7 +3383,9 @@
92739352,92739355,PL
92739356,92739403,FR
92739404,92739407,IE
-92739408,92740415,FR
+92739408,92739711,FR
+92739712,92739839,GB
+92739840,92740415,FR
92740416,92740431,NL
92740432,92740611,FR
92740612,92740615,CZ
@@ -1907,11 +3434,15 @@
92744124,92744127,GB
92744128,92744247,FR
92744248,92744251,DE
-92744252,92744319,FR
+92744252,92744267,FR
+92744268,92744271,ES
+92744272,92744319,FR
92744320,92744323,GB
92744324,92744383,FR
92744384,92744399,GB
-92744400,92744551,FR
+92744400,92744431,FR
+92744432,92744447,GB
+92744448,92744551,FR
92744552,92744555,ES
92744556,92744951,FR
92744952,92744959,ES
@@ -1922,7 +3453,9 @@
92745396,92745399,GB
92745400,92745663,FR
92745664,92745695,PL
-92745696,92746415,FR
+92745696,92746143,FR
+92746144,92746175,CZ
+92746176,92746415,FR
92746416,92746431,ES
92746432,92746559,FR
92746560,92746623,IT
@@ -1977,7 +3510,9 @@
92751244,92751247,ES
92751248,92751383,FR
92751384,92751391,ES
-92751392,92751487,FR
+92751392,92751475,FR
+92751476,92751479,DE
+92751480,92751487,FR
92751488,92751615,IE
92751616,92751711,FR
92751712,92751712,DE
@@ -1999,7 +3534,9 @@
92754552,92754555,DE
92754556,92754579,FR
92754580,92754583,ES
-92754584,92755135,FR
+92754584,92755035,FR
+92755036,92755039,DE
+92755040,92755135,FR
92755136,92755199,PT
92755200,92755439,FR
92755440,92755455,GB
@@ -2073,7 +3610,9 @@
92763392,92763519,IE
92763520,92764223,FR
92764224,92764287,ES
-92764288,92764591,FR
+92764288,92764403,FR
+92764404,92764407,IT
+92764408,92764591,FR
92764592,92764595,PL
92764596,92764687,FR
92764688,92764703,ES
@@ -2094,8 +3633,8 @@
92776896,92776959,NL
92776960,92777055,FR
92777056,92777087,DE
-92777088,92777855,FR
-92777856,92777983,GB
+92777088,92777839,FR
+92777840,92777983,GB
92777984,92778431,FR
92778432,92778495,ES
92778496,92782335,FR
@@ -2150,7 +3689,9 @@
92785368,92785407,FR
92785408,92785439,ES
92785440,92785455,DE
-92785456,92785611,FR
+92785456,92785511,FR
+92785512,92785519,DE
+92785520,92785611,FR
92785612,92785615,ES
92785616,92785735,FR
92785736,92785739,DE
@@ -2212,9 +3753,13 @@
92790280,92790283,IE
92790284,92790671,FR
92790672,92790679,ES
-92790680,92791023,FR
+92790680,92790799,FR
+92790800,92790803,GB
+92790804,92791023,FR
92791024,92791031,DE
-92791032,92791903,FR
+92791032,92791279,FR
+92791280,92791283,LT
+92791284,92791903,FR
92791904,92791935,PT
92791936,92792415,FR
92792416,92792431,ES
@@ -2295,9 +3840,7 @@
93431808,93433855,ES
93433856,93437951,DE
93437952,93454335,RU
-93454336,93582687,DE
-93582688,93582719,US
-93582720,93585407,DE
+93454336,93585407,DE
93585408,93610602,GB
93610603,93610603,US
93610604,93626367,GB
@@ -2326,9 +3869,7 @@
93715456,93715967,CA
93715968,93716479,NL
93716480,93749247,GB
-93749248,93750015,IT
-93750016,93750207,CH
-93750208,93753343,IT
+93749248,93753343,IT
93753344,93756415,GB
93756416,93757439,FR
93757440,93765631,GB
@@ -2372,12 +3913,19 @@
94011392,94015487,GB
94015488,94021631,DE
94021632,94022143,BA
-94022144,94027263,RO
+94022144,94025215,RO
+94025216,94025983,GB
+94025984,94026751,RO
+94026752,94027263,GB
94027264,94027775,MD
94027776,94035967,IT
94035968,94036991,RO
94036992,94037503,BA
-94037504,94041087,RO
+94037504,94038015,RO
+94038016,94038271,GB
+94038272,94040575,RO
+94040576,94040831,GB
+94040832,94041087,RO
94041088,94042111,SE
94042112,94043135,BA
94043136,94044159,RO
@@ -2451,7 +3999,7 @@
94367744,94369791,ES
94369792,94371839,TR
94371840,94437375,IR
-94437376,94502911,AE
+94437376,94502911,DE
94502912,94568447,OM
94568448,94633983,SA
94633984,94896127,RU
@@ -2582,9 +4130,7 @@
95557168,95557631,GB
95557632,95559679,RU
95559680,95561727,NL
-95561728,95563007,IT
-95563008,95563263,GB
-95563264,95563775,IT
+95561728,95563775,IT
95563776,95567871,SK
95567872,95569919,NL
95569920,95571967,SE
@@ -2632,7 +4178,8 @@
96230400,96230911,LU
96230912,96231423,IL
96231424,96234495,RU
-96234496,96235519,LU
+96234496,96235007,PL
+96235008,96235519,US
96235520,96237567,RU
96237568,96239615,US
96239616,96240639,RU
@@ -2643,7 +4190,8 @@
96244736,96245759,LU
96245760,96246783,KZ
96246784,96249855,RU
-96249856,96250879,LU
+96249856,96250367,TR
+96250368,96250879,RU
96250880,96251903,UA
96251904,96252159,DE
96252160,96252415,ES
@@ -2712,7 +4260,11 @@
96740432,96740447,PL
96740448,96741039,FR
96741040,96741043,PT
-96741044,96741351,FR
+96741044,96741171,FR
+96741172,96741175,ES
+96741176,96741279,FR
+96741280,96741295,GB
+96741296,96741351,FR
96741352,96741359,LT
96741360,96741375,FR
96741376,96741391,GB
@@ -2780,7 +4332,9 @@
96757884,96757887,ES
96757888,96758247,FR
96758248,96758251,DE
-96758252,96759071,FR
+96758252,96758275,FR
+96758276,96758279,ES
+96758280,96759071,FR
96759072,96759103,CZ
96759104,96759311,FR
96759312,96759327,BE
@@ -2836,7 +4390,9 @@
96766260,96766263,ES
96766264,96766267,DE
96766268,96766271,ES
-96766272,96767031,FR
+96766272,96766975,FR
+96766976,96766979,IE
+96766980,96767031,FR
96767032,96767035,GB
96767036,96767175,FR
96767176,96767183,DE
@@ -2844,7 +4400,9 @@
96767216,96767231,ES
96767232,96767243,FR
96767244,96767247,DE
-96767248,96767759,FR
+96767248,96767419,FR
+96767420,96767423,NL
+96767424,96767759,FR
96767760,96767775,DE
96767776,96767823,FR
96767824,96767839,BE
@@ -2933,7 +4491,9 @@
96778244,96778255,FR
96778256,96778259,NL
96778260,96778263,PL
-96778264,96778859,FR
+96778264,96778843,FR
+96778844,96778847,BE
+96778848,96778859,FR
96778860,96778863,NL
96778864,96778867,CZ
96778868,96778871,BE
@@ -2946,7 +4506,9 @@
96779168,96779199,PT
96779200,96779247,FR
96779248,96779255,CZ
-96779256,96780355,FR
+96779256,96779543,FR
+96779544,96779547,ES
+96779548,96780355,FR
96780356,96780359,BE
96780360,96780815,FR
96780816,96780823,ES
@@ -2968,7 +4530,9 @@
96782168,96782175,ES
96782176,96782199,FR
96782200,96782207,CZ
-96782208,96782911,FR
+96782208,96782387,FR
+96782388,96782391,CZ
+96782392,96782911,FR
96782912,96782915,LT
96782916,96782999,FR
96783000,96783007,FI
@@ -2980,7 +4544,9 @@
96783312,96783327,DE
96783328,96783519,FR
96783520,96783551,ES
-96783552,96783771,FR
+96783552,96783755,FR
+96783756,96783759,NL
+96783760,96783771,FR
96783772,96783775,DE
96783776,96783887,FR
96783888,96783903,DE
@@ -3033,7 +4599,9 @@
96792752,96792767,DE
96792768,96792923,FR
96792924,96792927,PL
-96792928,96793039,FR
+96792928,96793015,FR
+96793016,96793019,DE
+96793020,96793039,FR
96793040,96793047,IT
96793048,96793583,FR
96793584,96793599,DE
@@ -3049,7 +4617,9 @@
96794472,96794479,ES
96794480,96794623,FR
96794624,96794687,CZ
-96794688,96795903,FR
+96794688,96795367,FR
+96795368,96795371,NL
+96795372,96795903,FR
96795904,96796159,ES
96796160,96796671,FR
96796672,96862207,AZ
@@ -3074,7 +4644,9 @@
96985088,96987135,ES
96987136,96989183,UA
96989184,96993279,DE
-96993280,97001471,NL
+96993280,96998015,NL
+96998016,96998047,GB
+96998048,97001471,NL
97001472,97009663,RU
97009664,97058815,IR
97058816,97091583,PL
@@ -3343,26 +4915,38 @@
134247424,134247424,DE
134247425,134443007,US
134443008,134445567,MP
-134445568,134445879,GU
+134445568,134445847,GU
+134445848,134445849,MP
+134445850,134445851,GU
+134445852,134445853,MP
+134445854,134445873,GU
+134445874,134445874,MP
+134445875,134445879,GU
134445880,134445883,MP
-134445884,134445890,GU
-134445891,134445891,MP
-134445892,134445900,GU
-134445901,134445902,MP
-134445903,134445903,GU
-134445904,134445919,MP
-134445920,134445951,GU
+134445884,134445900,GU
+134445901,134445901,MP
+134445902,134445907,GU
+134445908,134445913,MP
+134445914,134445915,GU
+134445916,134445927,MP
+134445928,134445945,GU
+134445946,134445947,MP
+134445948,134445951,GU
134445952,134445967,MP
-134445968,134445991,GU
-134445992,134445999,MP
-134446000,134446003,GU
-134446004,134446015,MP
-134446016,134446016,GU
-134446017,134446017,MP
-134446018,134446018,GU
-134446019,134446019,MP
-134446020,134446031,GU
-134446032,134446059,MP
+134445968,134445975,GU
+134445976,134445979,MP
+134445980,134445991,GU
+134445992,134445995,MP
+134445996,134446007,GU
+134446008,134446019,MP
+134446020,134446023,GU
+134446024,134446027,MP
+134446028,134446031,GU
+134446032,134446033,MP
+134446034,134446039,GU
+134446040,134446047,MP
+134446048,134446051,GU
+134446052,134446059,MP
134446060,134446063,GU
134446064,134447103,MP
134447104,134738943,US
@@ -3388,18 +4972,14 @@
135607296,135792639,US
135792640,135794687,CA
135794688,135925759,US
-135925760,135926783,VI
-135926784,135945727,US
+135925760,135926527,VI
+135926528,135945727,US
135945728,135945983,CA
-135945984,135962623,US
-135962624,135962879,DE
-135962880,136054015,US
+135945984,136054015,US
136054016,136054271,GB
136054272,136175615,US
136175616,136175871,CA
-136175872,136176383,US
-136176384,136176639,CA
-136176640,136237055,US
+136175872,136237055,US
136237056,136239103,CA
136239104,136404991,US
136404992,136407039,CA
@@ -3409,9 +4989,7 @@
136415667,136415743,CA
136415744,136702290,US
136702291,136702291,UM
-136702292,136737791,US
-136737792,136738815,VI
-136738816,136810495,US
+136702292,136810495,US
136810496,136810751,DE
136810752,139954241,US
139954242,139954242,ES
@@ -3419,7 +4997,10 @@
142606336,146800639,CN
146800640,147849215,US
147849216,147914751,GB
-147914752,148897791,SG
+147914752,147922943,RU
+147922944,147931135,SG
+147931136,147947519,DE
+147947520,148897791,SG
148897792,151521029,US
151521030,151521030,FR
151521031,151587080,US
@@ -3429,13 +5010,15 @@
185405201,185405201,CZ
185405202,185999659,US
185999660,185999660,FR
-185999661,203417087,US
-203417088,203417599,CA
-203417600,204046335,US
-204046336,204047359,PR
-204047360,204048031,US
+185999661,201400575,US
+201400576,201400831,PR
+201400832,203078911,US
+203078912,203079167,CA
+203079168,204048031,US
204048032,204048047,PR
-204048048,209100799,US
+204048048,208304383,US
+208304384,208304639,CA
+208304640,209100799,US
209100800,209101477,VI
209101478,209101478,US
209101479,209101823,VI
@@ -3443,7 +5026,9 @@
209102336,209102847,VI
209102848,209472767,US
209472768,209472768,IN
-209472769,212788735,US
+209472769,209784831,US
+209784832,209785343,CA
+209785344,212788735,US
212788736,212789247,PR
212789248,212793087,US
212793088,212793343,PR
@@ -3459,9 +5044,11 @@
214786048,214786303,PR
214786304,214787071,US
214787072,214788095,PR
-214788096,216458111,US
-216458112,216458239,CA
-216458240,221249535,US
+214788096,216457983,US
+216457984,216458239,CA
+216458240,216493823,US
+216493824,216494079,CA
+216494080,221249535,US
221249536,221380607,SE
221380608,221577215,US
221577216,221642751,SE
@@ -3616,7 +5203,7 @@
225163584,225163587,DE
225163588,225163591,US
225163592,225163595,HK
-225163596,225163599,US
+225163596,225163599,ZA
225163600,225163603,GB
225163604,225163607,DE
225163608,225163611,GB
@@ -3646,7 +5233,10 @@
225163748,225165843,US
225165844,225165847,KR
225165848,225165855,GB
-225165856,225443839,US
+225165856,225165859,US
+225165860,225165863,JP
+225165864,225165867,ZA
+225165868,225443839,US
225443840,225705983,JP
225705984,226230271,US
226230272,226361343,KR
@@ -3666,7 +5256,14 @@
234381312,234381567,IE
234381568,234381823,DE
234381824,234382079,JP
-234382080,234487807,US
+234382080,234382335,US
+234382336,234382591,SE
+234382592,234382847,GB
+234382848,234383103,AU
+234383104,234383359,US
+234383360,234383615,BR
+234383616,234383871,IN
+234383872,234487807,US
234487808,234618879,SG
234618880,234881023,US
234881024,234883071,CN
@@ -3777,43 +5374,44 @@
247988224,248250367,AU
248250368,248381439,CN
248381440,248446975,KR
-248446976,248512511,TH
+248446976,248451071,TH
+248451072,248451327,NO
+248451328,248512511,TH
248512512,249561087,CN
249561088,251658239,VN
251658240,257532415,US
257532416,257532423,SG
257532424,257532431,US
257532432,257532671,SG
-257532672,257532927,AU
-257532928,257533951,US
+257532672,257533951,US
257533952,257535999,IN
-257536000,257597951,US
+257536000,257597439,US
+257597440,257597951,ES
257597952,257597959,GB
257597960,257597967,US
257597968,257598207,GB
-257598208,259820031,US
-259820032,259820287,RO
-259820288,259821567,US
+257598208,257598463,ES
+257598464,259819519,US
+259819520,259820543,GB
+259820544,259821567,SG
259821568,259823615,IN
259823616,262406143,US
262406144,262537215,KR
-262537216,265003519,US
-265003520,265003547,GB
+262537216,265003007,US
+265003008,265003547,GB
265003548,265003548,FR
-265003549,265003775,GB
-265003776,265005311,US
+265003549,265005055,GB
+265005056,265005311,US
265005312,265005567,GB
-265005568,265019942,US
-265019943,265019943,PR
-265019944,265025791,US
+265005568,265025791,US
265025792,265026047,GB
265026048,265523711,US
265523712,265523967,SG
-265523968,265531391,US
-265531392,265533439,JP
-265533440,265537871,US
-265537872,265537879,CA
-265537880,266059775,US
+265523968,265525503,US
+265525504,265525759,MY
+265525760,265531391,US
+265531392,265535487,JP
+265535488,266059775,US
266059776,266063871,IN
266063872,266070015,US
266070016,266072063,AU
@@ -3858,7 +5456,9 @@
288358400,288366591,BR
288366592,289406975,US
289406976,289554431,IE
-289554432,289609727,US
+289554432,289605631,US
+289605632,289606655,FI
+289606656,289609727,US
289609728,289610751,AT
289610752,289611775,SE
289611776,289615871,GB
@@ -3868,14 +5468,12 @@
289624064,289628159,CH
289628160,289630207,US
289630208,289632255,SE
-289632256,289642495,US
-289642496,289644543,GB
-289644544,289648639,US
-289648640,289650687,GB
-289650688,289652735,US
+289632256,289633279,US
+289633280,289634303,DK
+289634304,289652735,US
289652736,289653759,NL
289653760,289654271,DE
-289654272,289654783,US
+289654272,289654783,TR
289654784,289655807,CZ
289655808,289656831,DE
289656832,289657855,BE
@@ -3883,10 +5481,12 @@
289658880,289659903,GB
289659904,289660927,US
289660928,289665023,ES
-289665024,289667071,US
-289667072,289668095,GB
+289665024,289666047,US
+289666048,289668095,GB
289668096,289669119,DE
-289669120,289746943,US
+289669120,289734655,US
+289734656,289742847,GB
+289742848,289746943,US
289746944,289751039,GB
289751040,289767423,US
289767424,289769471,GB
@@ -3931,10 +5531,9 @@
289957376,289957631,SE
289957632,289957887,US
289957888,289958143,LU
-289958144,289958399,US
+289958144,289958399,IT
289958400,289958655,IN
-289958656,289958911,US
-289958912,289959423,IT
+289958656,289959423,IT
289959424,289959935,DK
289959936,289960447,DE
289960448,289960959,IN
@@ -3946,25 +5545,36 @@
290193408,290258943,IN
290258944,290265087,US
290265088,290267135,RU
-290267136,290269183,US
+290267136,290269183,NL
290269184,290270207,PL
290270208,290271231,PT
-290271232,290277375,US
+290271232,290272255,CH
+290272256,290275327,US
+290275328,290277375,DE
290277376,290279423,GB
-290279424,290295295,US
+290279424,290291711,US
+290291712,290292223,FI
+290292224,290292735,HU
+290292736,290293247,NO
+290293248,290295295,US
290295296,290295807,IN
-290295808,290299903,US
+290295808,290297855,US
+290297856,290298879,SE
+290298880,290299903,US
290299904,290300927,LU
290300928,290301951,TR
290301952,290302463,IN
290302464,290302591,DE
290302592,290302975,US
290302976,290303999,DE
-290304000,290306047,US
+290304000,290306047,IT
290306048,290308095,DK
-290308096,290310143,US
+290308096,290310143,DE
290310144,290312191,IN
-290312192,290340863,US
+290312192,290314239,BE
+290314240,290320383,US
+290320384,290324479,FR
+290324480,290340863,US
290340864,290373631,IL
290373632,290374911,US
290374912,290375167,GB
@@ -3972,7 +5582,9 @@
290377728,290379775,GB
290379776,290383103,US
290383104,290383359,NL
-290383360,290390015,US
+290383360,290385151,US
+290385152,290385215,NL
+290385216,290390015,US
290390016,290394111,IL
290394112,290423807,US
290423808,290424831,SE
@@ -3989,7 +5601,9 @@
290799616,290801663,CN
290801664,290815999,US
290816000,290848767,CN
-290848768,290904063,US
+290848768,290875391,US
+290875392,290877439,AU
+290877440,290904063,US
290904064,290906111,NZ
290906112,290913791,US
290913792,290914047,AU
@@ -3997,7 +5611,9 @@
290914304,291045375,CN
291045376,291201023,US
291201024,291203071,JP
-291203072,300646399,US
+291203072,291225599,US
+291225600,291227647,TH
+291227648,300646399,US
300646400,300650495,JP
300650496,300654591,SG
300654592,300658687,US
@@ -4006,65 +5622,74 @@
300666880,300670975,NL
300670976,300675071,IE
300675072,300679167,IL
-300679168,301507071,US
+300679168,301502463,US
+301502464,301502719,GB
+301502720,301502975,NL
+301502976,301503743,DE
+301503744,301503999,GB
+301504000,301504255,SE
+301504256,301504511,US
+301504512,301504767,HK
+301504768,301505023,JP
+301505024,301505279,SG
+301505280,301505535,AU
+301505536,301505791,HK
+301505792,301506047,JP
+301506048,301506559,US
+301506560,301506815,HK
+301506816,301507071,JP
301507072,301507327,IN
-301507328,301801983,US
-301801984,301802239,GB
-301802240,301802495,US
-301802496,301802751,GB
-301802752,301803007,US
-301803008,301803263,SE
-301803264,301805567,US
-301805568,301805823,DE
-301805824,301806591,US
-301806592,301806847,NL
-301806848,301807103,US
-301807104,301807359,DE
-301807360,301807615,US
-301807616,301807871,DE
-301807872,301809151,US
-301809152,301809407,IE
-301809408,301810175,US
-301810176,301810431,AU
-301810432,301810687,US
-301810688,301810943,JP
-301810944,301811199,US
-301811200,301811455,JP
-301811456,301811711,US
-301811712,301811967,DE
-301811968,301812223,US
-301812224,301812479,JP
-301812480,301812735,US
-301812736,301812991,GB
-301812992,301813247,US
-301813248,301813503,DE
-301813504,301814271,US
-301814272,301814527,SG
-301814528,301814783,US
-301814784,301815039,HK
-301815040,301815295,US
-301815296,301815551,HK
-301815552,301819903,US
-301819904,301820159,NL
-301820160,301821439,US
-301821440,301821695,ZA
-301821696,301821951,US
-301821952,301822207,FR
-301822208,301822463,US
-301822464,301822719,KR
-301822720,301822975,US
-301822976,301823231,TW
-301823232,301824511,US
-301824512,301824767,RU
-301824768,301987839,US
+301507328,301518847,US
+301518848,301519103,GB
+301519104,301519359,DE
+301519360,301519615,NL
+301519616,301519871,GB
+301519872,301520383,DE
+301520384,301520639,SE
+301520640,301520895,US
+301520896,301521151,HK
+301521152,301521407,JP
+301521408,301521663,SG
+301521664,301521919,AU
+301521920,301522175,HK
+301522176,301522431,JP
+301522432,301801983,US
+301801984,301803007,GB
+301803008,301803519,SE
+301803520,301805567,US
+301805568,301806079,DE
+301806080,301806591,US
+301806592,301807103,NL
+301807104,301808127,DE
+301808128,301809151,US
+301809152,301809663,IE
+301809664,301810175,US
+301810176,301810687,AU
+301810688,301811711,JP
+301811712,301812223,DE
+301812224,301812735,JP
+301812736,301813247,GB
+301813248,301814271,DE
+301814272,301814783,SG
+301814784,301815551,HK
+301815552,301815807,US
+301815808,301816319,AU
+301816320,301817343,JP
+301817344,301817855,HK
+301817856,301818367,US
+301818368,301819391,GB
+301819392,301820415,NL
+301820416,301820927,DK
+301820928,301821439,FR
+301821440,301821951,ZA
+301821952,301822463,FR
+301822464,301822975,KR
+301822976,301823999,TW
+301824000,301824511,US
+301824512,301825023,RU
+301825024,301987839,US
301987840,301987847,GB
-301987848,301987863,US
-301987864,301988111,GB
-301988112,301988119,US
-301988120,301988151,GB
-301988152,301988167,US
-301988168,301988191,GB
-301988192,301989023,US
+301987848,301989023,US
301989024,301989031,MO
301989032,301989375,US
301989376,301989631,SG
@@ -4105,7 +5730,7 @@
337993728,338001919,JP
338001920,338018303,US
338018304,338026495,AU
-338026496,338051071,CH
+338026496,338051071,US
338051072,338059263,IE
338059264,338060799,US
338060800,338061311,IE
@@ -4115,21 +5740,21 @@
338062848,338063359,US
338063360,338063871,AU
338063872,338063999,CA
-338064000,338064127,US
+338064000,338064127,ZA
338064128,338064383,DE
338064384,338064895,JP
338064896,338065151,DE
338065152,338065407,US
338065408,338065663,NO
-338065664,338067455,US
-338067456,338069503,CH
+338065664,338066431,US
+338066432,338066943,AE
+338066944,338067455,IN
+338067456,338069503,US
338069504,338071551,AE
338071552,338073599,CA
-338073600,338081791,CH
-338081792,338082815,US
+338073600,338082815,US
338082816,338083839,FR
-338083840,338100223,CH
-338100224,338118655,US
+338083840,338118655,US
338118656,338120703,AU
338120704,338124799,FR
338124800,338132991,AU
@@ -4159,8 +5784,7 @@
338362368,338370559,CA
338370560,338378751,FR
338378752,338386943,JP
-338386944,338391039,NO
-338391040,338393087,US
+338386944,338393087,US
338393088,338395135,IN
338395136,338411519,SG
338411520,338434047,US
@@ -4171,25 +5795,25 @@
338477056,338493439,SG
338493440,338509823,US
338509824,338518015,AE
-338518016,338567167,DE
+338518016,338567167,US
338567168,338575359,AE
-338575360,338583551,US
-338583552,338595839,NO
-338595840,338599935,US
-338599936,338608127,NO
-338608128,344262655,US
+338575360,338595839,US
+338595840,338599935,AE
+338599936,338608127,US
+338608128,338616319,AE
+338616320,344262655,US
344262656,344262911,GB
344262912,344592895,US
344592896,344592945,GB
344592946,344592946,US
344592947,344593151,GB
-344593152,344593407,US
-344593408,344594431,DK
-344594432,344662783,US
-344662784,344663039,MY
-344663040,344670207,US
+344593152,344662015,US
+344662016,344664063,MY
+344664064,344670207,US
344670208,344672255,IN
-344672256,344881151,US
+344672256,344677631,US
+344677632,344677887,IN
+344677888,344881151,US
344881152,344881407,IN
344881408,344977407,US
344977408,344977663,IN
@@ -4242,15 +5866,55 @@
372398272,372398303,AU
372398304,385884159,US
385884160,385888255,NL
-385888256,385920511,US
-385920512,385920767,NL
+385888256,385917457,US
+385917458,385917463,ID
+385917464,385917479,US
+385917480,385917480,ID
+385917481,385917481,US
+385917482,385917484,ID
+385917485,385917485,US
+385917486,385917494,ID
+385917495,385920511,US
+385920512,385920587,NL
+385920588,385920591,CH
+385920592,385920595,NL
+385920596,385920599,CH
+385920600,385920603,NL
+385920604,385920607,CH
+385920608,385920611,NL
+385920612,385920615,CH
+385920616,385920619,NL
+385920620,385920623,CH
+385920624,385920627,NL
+385920628,385920631,CH
+385920632,385920635,NL
+385920636,385920639,CH
+385920640,385920643,NL
+385920644,385920647,CH
+385920648,385920767,NL
385920768,385930239,US
385930240,385931263,NL
385931264,385942527,US
385942528,385943551,NL
385943552,385957887,US
385957888,385961983,NL
-385961984,386003199,US
+385961984,386002995,US
+386002996,386002999,AU
+386003000,386003003,US
+386003004,386003007,AU
+386003008,386003011,US
+386003012,386003015,AU
+386003016,386003019,US
+386003020,386003022,AU
+386003023,386003095,US
+386003096,386003099,AU
+386003100,386003103,US
+386003104,386003104,AU
+386003105,386003154,US
+386003155,386003158,AU
+386003159,386003162,US
+386003163,386003166,AU
+386003167,386003199,US
386003200,386003967,NL
386003968,386013183,US
386013184,386013695,NL
@@ -4265,12 +5929,84 @@
386068480,386073343,US
386073344,386073599,NL
386073600,386076415,US
-386076416,386076671,NL
-386076672,386095615,US
-386095616,386096127,NL
-386096128,386191359,US
+386076416,386076419,NL
+386076420,386076441,GB
+386076442,386076475,NL
+386076476,386076479,GB
+386076480,386076483,NL
+386076484,386076487,GB
+386076488,386076491,NL
+386076492,386076495,GB
+386076496,386076499,NL
+386076500,386076501,GB
+386076502,386076671,NL
+386076672,386090517,US
+386090518,386090519,IN
+386090520,386090523,US
+386090524,386090524,IN
+386090525,386090525,US
+386090526,386090527,IN
+386090528,386090531,US
+386090532,386090535,IN
+386090536,386090539,US
+386090540,386090543,IN
+386090544,386090547,US
+386090548,386090551,IN
+386090552,386090555,US
+386090556,386090558,IN
+386090559,386090563,US
+386090564,386090565,IN
+386090566,386090609,US
+386090610,386090613,IN
+386090614,386090617,US
+386090618,386090621,IN
+386090622,386091624,US
+386091625,386091634,JP
+386091635,386095615,US
+386095616,386096021,NL
+386096022,386096025,SE
+386096026,386096029,NL
+386096030,386096033,SE
+386096034,386096127,NL
+386096128,386099203,US
+386099204,386099233,JP
+386099234,386099325,US
+386099326,386099327,JP
+386099328,386099331,US
+386099332,386099332,JP
+386099333,386099348,US
+386099349,386099349,JP
+386099350,386099350,US
+386099351,386099351,JP
+386099352,386099355,US
+386099356,386099359,JP
+386099360,386099422,US
+386099423,386099432,JP
+386099433,386191359,US
386191360,386195455,NL
-386195456,386201599,US
+386195456,386199701,US
+386199702,386199703,JP
+386199704,386199707,US
+386199708,386199711,JP
+386199712,386199715,US
+386199716,386199719,JP
+386199720,386199723,US
+386199724,386199727,JP
+386199728,386199731,US
+386199732,386199732,JP
+386199733,386199733,US
+386199734,386199735,JP
+386199736,386199739,US
+386199740,386199741,JP
+386199742,386199742,US
+386199743,386199743,JP
+386199744,386199747,US
+386199748,386199749,JP
+386199750,386199750,US
+386199751,386199751,JP
+386199752,386199755,US
+386199756,386199759,JP
+386199760,386201599,US
386201600,386203135,NL
386203136,386215935,US
386215936,386220031,NL
@@ -4278,10 +6014,44 @@
386228224,386232319,NL
386232320,386244607,US
386244608,386244863,NL
-386244864,386247679,US
+386244864,386246046,US
+386246047,386246057,SG
+386246058,386246058,US
+386246059,386246059,SG
+386246060,386246060,US
+386246061,386246061,SG
+386246062,386246085,US
+386246086,386246089,SG
+386246090,386246093,US
+386246094,386246094,SG
+386246095,386246095,US
+386246096,386246097,SG
+386246098,386247679,US
386247680,386248703,NL
386248704,386297855,US
-386297856,386298879,NL
+386297856,386298173,NL
+386298174,386298175,AT
+386298176,386298179,NL
+386298180,386298183,AT
+386298184,386298187,NL
+386298188,386298189,AT
+386298190,386298270,NL
+386298271,386298271,AT
+386298272,386298275,NL
+386298276,386298279,AT
+386298280,386298283,NL
+386298284,386298287,AT
+386298288,386298291,NL
+386298292,386298295,AT
+386298296,386298299,NL
+386298300,386298303,AT
+386298304,386298323,NL
+386298324,386298327,AT
+386298328,386298331,NL
+386298332,386298335,AT
+386298336,386298339,NL
+386298340,386298342,AT
+386298343,386298879,NL
386298880,386300415,US
386300416,386301951,NL
386301952,386383871,US
@@ -4289,7 +6059,43 @@
386387968,386398207,US
386398208,386398719,NL
386398720,386398975,US
-386398976,386399231,NL
+386398976,386399037,NL
+386399038,386399039,DE
+386399040,386399043,NL
+386399044,386399047,DE
+386399048,386399051,NL
+386399052,386399055,DE
+386399056,386399059,NL
+386399060,386399063,DE
+386399064,386399067,NL
+386399068,386399071,DE
+386399072,386399075,NL
+386399076,386399079,DE
+386399080,386399131,NL
+386399132,386399135,DE
+386399136,386399139,NL
+386399140,386399143,DE
+386399144,386399147,NL
+386399148,386399149,DE
+386399150,386399150,NL
+386399151,386399151,DE
+386399152,386399155,NL
+386399156,386399159,DE
+386399160,386399163,NL
+386399164,386399167,DE
+386399168,386399171,NL
+386399172,386399175,DE
+386399176,386399179,NL
+386399180,386399183,DE
+386399184,386399187,NL
+386399188,386399191,DE
+386399192,386399195,NL
+386399196,386399199,DE
+386399200,386399203,NL
+386399204,386399207,DE
+386399208,386399211,NL
+386399212,386399213,DE
+386399214,386399231,NL
386399232,386400255,US
386400256,386404351,NL
386404352,386465791,US
@@ -4301,10 +6107,92 @@
386551808,386593791,US
386593792,386594815,NL
386594816,386595071,US
-386595072,386595327,NL
+386595072,386595123,NL
+386595124,386595127,CH
+386595128,386595131,NL
+386595132,386595135,CH
+386595136,386595139,NL
+386595140,386595143,CH
+386595144,386595147,NL
+386595148,386595151,CH
+386595152,386595155,NL
+386595156,386595159,CH
+386595160,386595163,NL
+386595164,386595167,CH
+386595168,386595171,NL
+386595172,386595175,CH
+386595176,386595179,NL
+386595180,386595182,CH
+386595183,386595187,NL
+386595188,386595191,CH
+386595192,386595327,NL
386595328,386595839,US
-386595840,386596095,NL
-386596096,386656255,US
+386595840,386595995,NL
+386595996,386595999,GB
+386596000,386596003,NL
+386596004,386596005,GB
+386596006,386596006,NL
+386596007,386596007,GB
+386596008,386596011,NL
+386596012,386596013,GB
+386596014,386596014,NL
+386596015,386596015,GB
+386596016,386596021,NL
+386596022,386596022,GB
+386596023,386596027,NL
+386596028,386596031,GB
+386596032,386596035,NL
+386596036,386596039,GB
+386596040,386596043,NL
+386596044,386596046,GB
+386596047,386596095,NL
+386596096,386648195,US
+386648196,386648199,TH
+386648200,386648203,US
+386648204,386648207,TH
+386648208,386651674,US
+386651675,386651678,IN
+386651679,386651682,US
+386651683,386651686,IN
+386651687,386651690,US
+386651691,386651692,IN
+386651693,386651693,US
+386651694,386651694,IN
+386651695,386651698,US
+386651699,386651702,IN
+386651703,386651706,US
+386651707,386651710,IN
+386651711,386651714,US
+386651715,386651716,IN
+386651717,386651907,US
+386651908,386651911,IN
+386651912,386651915,US
+386651916,386651919,IN
+386651920,386651923,US
+386651924,386651927,IN
+386651928,386651931,US
+386651932,386651935,IN
+386651936,386651939,US
+386651940,386651943,IN
+386651944,386651947,US
+386651948,386651951,IN
+386651952,386651955,US
+386651956,386651959,IN
+386651960,386651963,US
+386651964,386651967,IN
+386651968,386651971,US
+386651972,386651975,IN
+386651976,386651979,US
+386651980,386651983,IN
+386651984,386651987,US
+386651988,386651991,IN
+386651992,386651995,US
+386651996,386651999,IN
+386652000,386652003,US
+386652004,386652007,IN
+386652008,386652011,US
+386652012,386652015,IN
+386652016,386656255,US
386656256,386656511,NL
386656512,386662399,US
386662400,386666495,NL
@@ -4316,43 +6204,301 @@
386736128,386744319,NL
386744320,386774527,US
386774528,386775039,NL
-386775040,386789375,US
+386775040,386784078,US
+386784079,386784079,HK
+386784080,386784083,US
+386784084,386784084,HK
+386784085,386784085,US
+386784086,386784087,HK
+386784088,386784091,US
+386784092,386784095,HK
+386784096,386784099,US
+386784100,386784103,HK
+386784104,386784107,US
+386784108,386784111,HK
+386784112,386784115,US
+386784116,386784119,HK
+386784120,386784123,US
+386784124,386784127,HK
+386784128,386784131,US
+386784132,386784135,HK
+386784136,386784139,US
+386784140,386784143,HK
+386784144,386784147,US
+386784148,386784151,HK
+386784152,386784155,US
+386784156,386784159,HK
+386784160,386784163,US
+386784164,386784167,HK
+386784168,386784171,US
+386784172,386784175,HK
+386784176,386784179,US
+386784180,386784183,HK
+386784184,386784187,US
+386784188,386784191,HK
+386784192,386784195,US
+386784196,386784196,HK
+386784197,386784197,US
+386784198,386784199,HK
+386784200,386784203,US
+386784204,386784206,HK
+386784207,386784224,US
+386784225,386784228,HK
+386784229,386784232,US
+386784233,386784236,HK
+386784237,386784240,US
+386784241,386784244,HK
+386784245,386789375,US
386789376,386797567,NL
386797568,386816511,US
-386816512,386826239,NL
+386816512,386817715,NL
+386817716,386817730,DE
+386817731,386817731,NL
+386817732,386817736,DE
+386817737,386817737,NL
+386817738,386817742,DE
+386817743,386817743,NL
+386817744,386817746,DE
+386817747,386826239,NL
386826240,386828287,US
386828288,386829311,NL
-386829312,386862079,US
+386829312,386859277,US
+386859278,386859307,JP
+386859308,386859311,US
+386859312,386859329,JP
+386859330,386859330,US
+386859331,386859337,JP
+386859338,386859447,US
+386859448,386859451,JP
+386859452,386859455,US
+386859456,386859459,JP
+386859460,386859463,US
+386859464,386859467,JP
+386859468,386859471,US
+386859472,386859475,JP
+386859476,386859479,US
+386859480,386859483,JP
+386859484,386859487,US
+386859488,386859491,JP
+386859492,386859495,US
+386859496,386859497,JP
+386859498,386861650,US
+386861651,386861659,MY
+386861660,386861667,US
+386861668,386861682,MY
+386861683,386862079,US
386862080,386862335,JP
386862336,386862591,KR
-386862592,386868735,US
-386868736,386868991,NL
+386862592,386867490,US
+386867491,386867493,IN
+386867494,386867497,US
+386867498,386867501,IN
+386867502,386867505,US
+386867506,386867506,IN
+386867507,386867507,US
+386867508,386867509,IN
+386867510,386867513,US
+386867514,386867515,IN
+386867516,386867516,US
+386867517,386867517,IN
+386867518,386867560,US
+386867561,386867562,IN
+386867563,386868735,US
+386868736,386868891,NL
+386868892,386868894,DE
+386868895,386868900,NL
+386868901,386868904,DE
+386868905,386868908,NL
+386868909,386868911,DE
+386868912,386868916,NL
+386868917,386868920,DE
+386868921,386868924,NL
+386868925,386868928,DE
+386868929,386868932,NL
+386868933,386868936,DE
+386868937,386868940,NL
+386868941,386868944,DE
+386868945,386868948,NL
+386868949,386868952,DE
+386868953,386868956,NL
+386868957,386868960,DE
+386868961,386868964,NL
+386868965,386868968,DE
+386868969,386868972,NL
+386868973,386868976,DE
+386868977,386868980,NL
+386868981,386868984,DE
+386868985,386868991,NL
386868992,386923519,US
386923520,386924543,NL
386924544,387055615,CA
-387055616,387088383,US
-387088384,387090431,PR
-387090432,387096575,US
-387096576,387098623,PR
-387098624,387108863,US
-387108864,387110911,PR
-387110912,387133439,US
+387055616,387133439,US
387133440,387133647,DE
387133648,387133655,US
387133656,387134463,DE
-387134464,387648767,US
+387134464,387135487,US
+387135488,387137535,GB
+387137536,387648767,US
387648768,387649023,DE
387649024,387707903,US
387707904,387708159,CH
387708160,387825663,US
387825664,387833855,CA
-387833856,387975167,US
+387833856,387974401,US
+387974402,387974405,AU
+387974406,387974409,US
+387974410,387974413,AU
+387974414,387974417,US
+387974418,387974421,AU
+387974422,387974425,US
+387974426,387974429,AU
+387974430,387974433,US
+387974434,387974437,AU
+387974438,387974441,US
+387974442,387974445,AU
+387974446,387974449,US
+387974450,387974453,AU
+387974454,387974457,US
+387974458,387974461,AU
+387974462,387974465,US
+387974466,387974469,AU
+387974470,387974474,US
+387974475,387974477,AU
+387974478,387974481,US
+387974482,387974485,AU
+387974486,387974489,US
+387974490,387974493,AU
+387974494,387974497,US
+387974498,387974499,AU
+387974500,387974507,US
+387974508,387974508,AU
+387974509,387974512,US
+387974513,387974516,AU
+387974517,387974520,US
+387974521,387974524,AU
+387974525,387974528,US
+387974529,387974532,AU
+387974533,387974536,US
+387974537,387974540,AU
+387974541,387974544,US
+387974545,387974548,AU
+387974549,387974552,US
+387974553,387974556,AU
+387974557,387974560,US
+387974561,387974564,AU
+387974565,387974568,US
+387974569,387974572,AU
+387974573,387974576,US
+387974577,387974577,AU
+387974578,387974578,US
+387974579,387974580,AU
+387974581,387974584,US
+387974585,387974588,AU
+387974589,387974592,US
+387974593,387974596,AU
+387974597,387974600,US
+387974601,387974604,AU
+387974605,387974608,US
+387974609,387974611,AU
+387974612,387975167,US
387975168,387976191,NL
387976192,387977727,US
387977728,387978239,NL
-387978240,387979263,US
+387978240,387978243,US
+387978244,387978247,HK
+387978248,387978251,US
+387978252,387978255,HK
+387978256,387978259,US
+387978260,387978263,HK
+387978264,387978267,US
+387978268,387978271,HK
+387978272,387978275,US
+387978276,387978279,HK
+387978280,387978283,US
+387978284,387978287,HK
+387978288,387978291,US
+387978292,387978295,HK
+387978296,387978299,US
+387978300,387978303,HK
+387978304,387978307,US
+387978308,387978311,HK
+387978312,387978315,US
+387978316,387978319,HK
+387978320,387979263,US
387979264,387980287,NL
-387980288,387994623,US
+387980288,387980291,US
+387980292,387980295,IN
+387980296,387980299,US
+387980300,387980302,IN
+387980303,387980330,US
+387980331,387980334,IN
+387980335,387980338,US
+387980339,387980340,IN
+387980341,387980547,US
+387980548,387980551,SG
+387980552,387980555,US
+387980556,387980559,SG
+387980560,387980563,US
+387980564,387980567,SG
+387980568,387980571,US
+387980572,387980575,SG
+387980576,387980579,US
+387980580,387980583,SG
+387980584,387980587,US
+387980588,387980591,SG
+387980592,387980595,US
+387980596,387980599,SG
+387980600,387980603,US
+387980604,387980607,SG
+387980608,387980611,US
+387980612,387980615,SG
+387980616,387980619,US
+387980620,387980622,SG
+387980623,387980627,US
+387980628,387980628,SG
+387980629,387980629,US
+387980630,387980631,SG
+387980632,387980635,US
+387980636,387980639,SG
+387980640,387980643,US
+387980644,387980645,SG
+387980646,387980646,US
+387980647,387980647,SG
+387980648,387980651,US
+387980652,387980655,SG
+387980656,387980659,US
+387980660,387980663,SG
+387980664,387980667,US
+387980668,387980671,SG
+387980672,387980676,US
+387980677,387980679,SG
+387980680,387980683,US
+387980684,387980687,SG
+387980688,387980691,US
+387980692,387980695,SG
+387980696,387980699,US
+387980700,387980702,SG
+387980703,387988483,US
+387988484,387988487,AU
+387988488,387988491,US
+387988492,387988495,AU
+387988496,387988499,US
+387988500,387988503,AU
+387988504,387988507,US
+387988508,387988511,AU
+387988512,387988515,US
+387988516,387988519,AU
+387988520,387988523,US
+387988524,387988526,AU
+387988527,387988531,US
+387988532,387988535,AU
+387988536,387988539,US
+387988540,387988543,AU
+387988544,387988547,US
+387988548,387988551,AU
+387988552,387988555,US
+387988556,387988556,AU
+387988557,387994623,US
387994624,387996159,NL
387996160,387997695,US
387997696,388005887,NL
@@ -4366,15 +6512,97 @@
388055040,388059135,NL
388059136,388084735,US
388084736,388085759,NL
-388085760,388091903,US
+388085760,388086783,US
+388086784,388087807,NL
+388087808,388091903,US
388091904,388095999,NL
388096000,388100095,US
388100096,388101119,NL
-388101120,388139519,US
+388101120,388119556,US
+388119557,388119559,JP
+388119560,388119563,US
+388119564,388119567,JP
+388119568,388119571,US
+388119572,388119575,JP
+388119576,388119579,US
+388119580,388119583,JP
+388119584,388119587,US
+388119588,388119591,JP
+388119592,388119595,US
+388119596,388119599,JP
+388119600,388119603,US
+388119604,388119607,JP
+388119608,388119611,US
+388119612,388119615,JP
+388119616,388119619,US
+388119620,388119623,JP
+388119624,388119627,US
+388119628,388119631,JP
+388119632,388119635,US
+388119636,388119639,JP
+388119640,388119643,US
+388119644,388119647,JP
+388119648,388119651,US
+388119652,388119655,JP
+388119656,388119659,US
+388119660,388119663,JP
+388119664,388119667,US
+388119668,388119668,JP
+388119669,388119868,US
+388119869,388119871,JP
+388119872,388119875,US
+388119876,388119879,JP
+388119880,388119883,US
+388119884,388119887,JP
+388119888,388119891,US
+388119892,388119892,JP
+388119893,388119893,US
+388119894,388119895,JP
+388119896,388119899,US
+388119900,388119903,JP
+388119904,388119907,US
+388119908,388119911,JP
+388119912,388119915,US
+388119916,388119919,JP
+388119920,388119923,US
+388119924,388119927,JP
+388119928,388119931,US
+388119932,388119935,JP
+388119936,388119939,US
+388119940,388119940,JP
+388119941,388120022,US
+388120023,388120023,JP
+388120024,388120027,US
+388120028,388120031,JP
+388120032,388139519,US
388139520,388140031,NL
388140032,388149247,US
388149248,388153343,NL
-388153344,388198399,US
+388153344,388198017,US
+388198018,388198021,JP
+388198022,388198025,US
+388198026,388198029,JP
+388198030,388198033,US
+388198034,388198037,JP
+388198038,388198041,US
+388198042,388198045,JP
+388198046,388198049,US
+388198050,388198053,JP
+388198054,388198057,US
+388198058,388198061,JP
+388198062,388198065,US
+388198066,388198069,JP
+388198070,388198073,US
+388198074,388198077,JP
+388198078,388198081,US
+388198082,388198085,JP
+388198086,388198089,US
+388198090,388198093,JP
+388198094,388198097,US
+388198098,388198101,JP
+388198102,388198105,US
+388198106,388198107,JP
+388198108,388198399,US
388198400,388202495,NL
388202496,388206591,US
388206592,388207103,NL
@@ -4382,7 +6610,135 @@
388207872,388208127,NL
388208128,388223999,US
388224000,388225023,NL
-388225024,388272127,US
+388225024,388225027,US
+388225028,388225031,JP
+388225032,388225035,US
+388225036,388225039,JP
+388225040,388225043,US
+388225044,388225047,JP
+388225048,388225051,US
+388225052,388225053,JP
+388225054,388225059,US
+388225060,388225063,JP
+388225064,388225067,US
+388225068,388225071,JP
+388225072,388225075,US
+388225076,388225078,JP
+388225079,388225083,US
+388225084,388225087,JP
+388225088,388225091,US
+388225092,388225095,JP
+388225096,388225099,US
+388225100,388225103,JP
+388225104,388225107,US
+388225108,388225111,JP
+388225112,388225116,US
+388225117,388225119,JP
+388225120,388225123,US
+388225124,388225127,JP
+388225128,388225131,US
+388225132,388225135,JP
+388225136,388225139,US
+388225140,388225143,JP
+388225144,388225147,US
+388225148,388225151,JP
+388225152,388225155,US
+388225156,388225159,JP
+388225160,388225163,US
+388225164,388225164,JP
+388225165,388225539,US
+388225540,388225543,KR
+388225544,388225547,US
+388225548,388225551,KR
+388225552,388225555,US
+388225556,388225559,KR
+388225560,388225563,US
+388225564,388225567,KR
+388225568,388225571,US
+388225572,388225575,KR
+388225576,388225579,US
+388225580,388225583,KR
+388225584,388225587,US
+388225588,388225591,KR
+388225592,388225595,US
+388225596,388225599,KR
+388225600,388225603,US
+388225604,388225607,KR
+388225608,388225611,US
+388225612,388225615,KR
+388225616,388225619,US
+388225620,388225623,KR
+388225624,388225627,US
+388225628,388225631,KR
+388225632,388225635,US
+388225636,388225639,KR
+388225640,388225643,US
+388225644,388225647,KR
+388225648,388225651,US
+388225652,388225655,KR
+388225656,388225659,US
+388225660,388225663,KR
+388225664,388235779,US
+388235780,388235782,JP
+388235783,388235787,US
+388235788,388235791,JP
+388235792,388235795,US
+388235796,388235799,JP
+388235800,388235803,US
+388235804,388235807,JP
+388235808,388235811,US
+388235812,388235815,JP
+388235816,388235819,US
+388235820,388235823,JP
+388235824,388235827,US
+388235828,388235831,JP
+388235832,388235835,US
+388235836,388235839,JP
+388235840,388235843,US
+388235844,388235847,JP
+388235848,388235851,US
+388235852,388235855,JP
+388235856,388235859,US
+388235860,388235863,JP
+388235864,388235867,US
+388235868,388235871,JP
+388235872,388235875,US
+388235876,388235879,JP
+388235880,388235883,US
+388235884,388235887,JP
+388235888,388235891,US
+388235892,388235892,JP
+388235893,388235893,US
+388235894,388235895,JP
+388235896,388235899,US
+388235900,388235903,JP
+388235904,388236035,US
+388236036,388236039,JP
+388236040,388236043,US
+388236044,388236047,JP
+388236048,388236051,US
+388236052,388236055,JP
+388236056,388236059,US
+388236060,388236060,JP
+388236061,388236062,US
+388236063,388236063,JP
+388236064,388236067,US
+388236068,388236071,JP
+388236072,388236075,US
+388236076,388236079,JP
+388236080,388236083,US
+388236084,388236087,JP
+388236088,388236091,US
+388236092,388236095,JP
+388236096,388236099,US
+388236100,388236103,JP
+388236104,388236107,US
+388236108,388236111,JP
+388236112,388236115,US
+388236116,388236119,JP
+388236120,388236123,US
+388236124,388236127,JP
+388236128,388272127,US
388272128,388280319,NL
388280320,388282367,US
388282368,388283391,NL
@@ -4412,7 +6768,15 @@
388493312,388501503,NL
388501504,388521983,US
388521984,388523007,NL
-388523008,388526079,US
+388523008,388523289,US
+388523290,388523293,AU
+388523294,388523297,US
+388523298,388523301,AU
+388523302,388523305,US
+388523306,388523309,AU
+388523310,388523313,US
+388523314,388523315,AU
+388523316,388526079,US
388526080,388530175,NL
388530176,388550655,US
388550656,388554751,NL
@@ -4424,61 +6788,907 @@
388632576,388636671,NL
388636672,388666367,US
388666368,388668415,NL
-388668416,388677631,US
+388668416,388668459,US
+388668460,388668463,JP
+388668464,388668467,US
+388668468,388668471,JP
+388668472,388668475,US
+388668476,388668479,JP
+388668480,388668483,US
+388668484,388668487,JP
+388668488,388668491,US
+388668492,388668495,JP
+388668496,388668499,US
+388668500,388668503,JP
+388668504,388668507,US
+388668508,388668511,JP
+388668512,388668515,US
+388668516,388668519,JP
+388668520,388668523,US
+388668524,388668527,JP
+388668528,388668531,US
+388668532,388668535,JP
+388668536,388668539,US
+388668540,388668543,JP
+388668544,388668547,US
+388668548,388668551,JP
+388668552,388668555,US
+388668556,388668559,JP
+388668560,388668563,US
+388668564,388668567,JP
+388668568,388668571,US
+388668572,388668575,JP
+388668576,388668579,US
+388668580,388668582,JP
+388668583,388668587,US
+388668588,388668591,JP
+388668592,388668595,US
+388668596,388668599,JP
+388668600,388668603,US
+388668604,388668607,JP
+388668608,388668611,US
+388668612,388668615,JP
+388668616,388668619,US
+388668620,388668623,JP
+388668624,388668627,US
+388668628,388668631,JP
+388668632,388668635,US
+388668636,388668639,JP
+388668640,388668643,US
+388668644,388668647,JP
+388668648,388668651,US
+388668652,388668655,JP
+388668656,388668659,US
+388668660,388668662,JP
+388668663,388668675,US
+388668676,388668676,JP
+388668677,388668677,US
+388668678,388668679,JP
+388668680,388668683,US
+388668684,388668687,JP
+388668688,388668692,US
+388668693,388668695,JP
+388668696,388668699,US
+388668700,388668703,JP
+388668704,388668707,US
+388668708,388668708,JP
+388668709,388677631,US
388677632,388681727,NL
388681728,388698111,US
388698112,388703231,NL
-388703232,388710399,US
+388703232,388706307,US
+388706308,388706310,HK
+388706311,388706315,US
+388706316,388706319,HK
+388706320,388706323,US
+388706324,388706327,HK
+388706328,388706331,US
+388706332,388706335,HK
+388706336,388706339,US
+388706340,388706343,HK
+388706344,388706347,US
+388706348,388706351,HK
+388706352,388706355,US
+388706356,388706359,HK
+388706360,388706363,US
+388706364,388706367,HK
+388706368,388706371,US
+388706372,388706372,HK
+388706373,388706373,US
+388706374,388706375,HK
+388706376,388706379,US
+388706380,388706383,HK
+388706384,388706387,US
+388706388,388706391,HK
+388706392,388706395,US
+388706396,388706399,HK
+388706400,388706403,US
+388706404,388706407,HK
+388706408,388706411,US
+388706412,388706415,HK
+388706416,388706419,US
+388706420,388706423,HK
+388706424,388706427,US
+388706428,388706431,HK
+388706432,388706435,US
+388706436,388706439,HK
+388706440,388706443,US
+388706444,388706447,HK
+388706448,388706451,US
+388706452,388706455,HK
+388706456,388706459,US
+388706460,388706463,HK
+388706464,388706467,US
+388706468,388706471,HK
+388706472,388706475,US
+388706476,388706479,HK
+388706480,388706483,US
+388706484,388706486,HK
+388706487,388706491,US
+388706492,388706495,HK
+388706496,388706499,US
+388706500,388706502,HK
+388706503,388706507,US
+388706508,388706511,HK
+388706512,388706515,US
+388706516,388706519,HK
+388706520,388706523,US
+388706524,388706525,HK
+388706526,388706526,US
+388706527,388706527,HK
+388706528,388706531,US
+388706532,388706535,HK
+388706536,388706539,US
+388706540,388706543,HK
+388706544,388706547,US
+388706548,388706548,HK
+388706549,388706549,US
+388706550,388706551,HK
+388706552,388706563,US
+388706564,388706567,HK
+388706568,388706571,US
+388706572,388706575,HK
+388706576,388706579,US
+388706580,388706583,HK
+388706584,388706587,US
+388706588,388706591,HK
+388706592,388706595,US
+388706596,388706598,HK
+388706599,388706603,US
+388706604,388706604,HK
+388706605,388706605,US
+388706606,388706607,HK
+388706608,388706611,US
+388706612,388706615,HK
+388706616,388706619,US
+388706620,388706623,HK
+388706624,388706627,US
+388706628,388706631,HK
+388706632,388706635,US
+388706636,388706639,HK
+388706640,388706643,US
+388706644,388706647,HK
+388706648,388706651,US
+388706652,388706653,HK
+388706654,388706654,US
+388706655,388706655,HK
+388706656,388706659,US
+388706660,388706663,HK
+388706664,388706667,US
+388706668,388706671,HK
+388706672,388706675,US
+388706676,388706679,HK
+388706680,388706683,US
+388706684,388706687,HK
+388706688,388706691,US
+388706692,388706693,HK
+388706694,388706694,US
+388706695,388706695,HK
+388706696,388710399,US
388710400,388714495,NL
388714496,388722687,US
388722688,388730879,NL
-388730880,388784895,US
+388730880,388757763,US
+388757764,388757767,JP
+388757768,388757771,US
+388757772,388757775,JP
+388757776,388757779,US
+388757780,388757782,JP
+388757783,388757787,US
+388757788,388757791,JP
+388757792,388757795,US
+388757796,388757799,JP
+388757800,388757803,US
+388757804,388757807,JP
+388757808,388757811,US
+388757812,388757815,JP
+388757816,388757819,US
+388757820,388757823,JP
+388757824,388757827,US
+388757828,388757829,JP
+388757830,388757830,US
+388757831,388757831,JP
+388757832,388757835,US
+388757836,388757839,JP
+388757840,388757843,US
+388757844,388757845,JP
+388757846,388757849,US
+388757850,388757853,JP
+388757854,388757857,US
+388757858,388757858,JP
+388757859,388757859,US
+388757860,388757861,JP
+388757862,388757865,US
+388757866,388757869,JP
+388757870,388757873,US
+388757874,388757877,JP
+388757878,388757881,US
+388757882,388757885,JP
+388757886,388757889,US
+388757890,388757893,JP
+388757894,388757898,US
+388757899,388757901,JP
+388757902,388757905,US
+388757906,388757909,JP
+388757910,388757913,US
+388757914,388757917,JP
+388757918,388757921,US
+388757922,388757922,JP
+388757923,388757923,US
+388757924,388757925,JP
+388757926,388757929,US
+388757930,388757931,JP
+388757932,388784895,US
388784896,388792319,NL
-388792320,388825087,US
+388792320,388803667,US
+388803668,388803671,JP
+388803672,388803675,US
+388803676,388803679,JP
+388803680,388803683,US
+388803684,388803687,JP
+388803688,388803691,US
+388803692,388803695,JP
+388803696,388803699,US
+388803700,388803703,JP
+388803704,388803707,US
+388803708,388803711,JP
+388803712,388803715,US
+388803716,388803719,JP
+388803720,388803723,US
+388803724,388803726,JP
+388803727,388803731,US
+388803732,388803735,JP
+388803736,388803739,US
+388803740,388803743,JP
+388803744,388803747,US
+388803748,388803751,JP
+388803752,388803755,US
+388803756,388803759,JP
+388803760,388803763,US
+388803764,388803767,JP
+388803768,388803771,US
+388803772,388803775,JP
+388803776,388803779,US
+388803780,388803783,JP
+388803784,388803787,US
+388803788,388803791,JP
+388803792,388803795,US
+388803796,388803799,JP
+388803800,388803803,US
+388803804,388803807,JP
+388803808,388803811,US
+388803812,388803813,JP
+388803814,388803827,US
+388803828,388803829,JP
+388803830,388803843,US
+388803844,388803847,KR
+388803848,388803851,US
+388803852,388803855,KR
+388803856,388803859,US
+388803860,388803863,KR
+388803864,388803867,US
+388803868,388803871,KR
+388803872,388803875,US
+388803876,388803879,KR
+388803880,388803883,US
+388803884,388803887,KR
+388803888,388803891,US
+388803892,388803895,KR
+388803896,388803899,US
+388803900,388803903,KR
+388803904,388803907,US
+388803908,388803911,KR
+388803912,388803915,US
+388803916,388803919,KR
+388803920,388803923,US
+388803924,388803924,KR
+388803925,388804099,US
+388804100,388804103,JP
+388804104,388804107,US
+388804108,388804111,JP
+388804112,388804115,US
+388804116,388804119,JP
+388804120,388804123,US
+388804124,388804127,JP
+388804128,388804131,US
+388804132,388804134,JP
+388804135,388804139,US
+388804140,388804143,JP
+388804144,388804147,US
+388804148,388804151,JP
+388804152,388804155,US
+388804156,388804159,JP
+388804160,388804163,US
+388804164,388804167,JP
+388804168,388804171,US
+388804172,388804175,JP
+388804176,388804179,US
+388804180,388804183,JP
+388804184,388804187,US
+388804188,388804188,JP
+388804189,388804189,US
+388804190,388804190,JP
+388804191,388804195,US
+388804196,388804199,JP
+388804200,388804203,US
+388804204,388804207,JP
+388804208,388804211,US
+388804212,388804215,JP
+388804216,388804219,US
+388804220,388804223,JP
+388804224,388804227,US
+388804228,388804231,JP
+388804232,388804235,US
+388804236,388804239,JP
+388804240,388804243,US
+388804244,388804247,JP
+388804248,388804251,US
+388804252,388804252,JP
+388804253,388804253,US
+388804254,388804255,JP
+388804256,388804259,US
+388804260,388804263,JP
+388804264,388804267,US
+388804268,388804271,JP
+388804272,388804275,US
+388804276,388804279,JP
+388804280,388804283,US
+388804284,388804287,JP
+388804288,388804291,US
+388804292,388804295,JP
+388804296,388804299,US
+388804300,388804303,JP
+388804304,388825087,US
388825088,388826111,NL
388826112,388828159,US
388828160,388829183,NL
388829184,388843519,US
388843520,388844543,NL
-388844544,388849663,US
+388844544,388848421,US
+388848422,388848425,IN
+388848426,388848429,US
+388848430,388848433,IN
+388848434,388848437,US
+388848438,388848441,IN
+388848442,388848445,US
+388848446,388848447,IN
+388848448,388849663,US
388849664,388853759,NL
388853760,388856575,US
388856576,388856831,NL
388856832,388863999,US
388864000,388865023,NL
-388865024,388885503,US
-388885504,388890623,NL
+388865024,388884547,US
+388884548,388884551,MY
+388884552,388884555,US
+388884556,388884559,MY
+388884560,388884563,US
+388884564,388884567,MY
+388884568,388884571,US
+388884572,388884575,MY
+388884576,388884579,US
+388884580,388884583,MY
+388884584,388884587,US
+388884588,388884588,MY
+388884589,388884589,US
+388884590,388884591,MY
+388884592,388884595,US
+388884596,388884599,MY
+388884600,388884611,US
+388884612,388884614,MY
+388884615,388884619,US
+388884620,388884623,MY
+388884624,388884627,US
+388884628,388884631,MY
+388884632,388884635,US
+388884636,388884639,MY
+388884640,388884643,US
+388884644,388884647,MY
+388884648,388884651,US
+388884652,388884655,MY
+388884656,388886527,US
+388886528,388890623,NL
388890624,388894207,US
388894208,388894719,NL
388894720,388897791,US
388897792,388898815,NL
388898816,388919295,US
388919296,388923391,NL
-388923392,388944895,US
+388923392,388942921,US
+388942922,388942925,JP
+388942926,388942929,US
+388942930,388942933,JP
+388942934,388942937,US
+388942938,388942941,JP
+388942942,388942945,US
+388942946,388942949,JP
+388942950,388942953,US
+388942954,388942954,JP
+388942955,388942955,US
+388942956,388942957,JP
+388942958,388942962,US
+388942963,388942965,JP
+388942966,388942969,US
+388942970,388942970,JP
+388942971,388942971,US
+388942972,388942973,JP
+388942974,388942977,US
+388942978,388942978,JP
+388942979,388942979,US
+388942980,388942981,JP
+388942982,388943107,US
+388943108,388943111,JP
+388943112,388943115,US
+388943116,388943116,JP
+388943117,388943117,US
+388943118,388943119,JP
+388943120,388943123,US
+388943124,388943127,JP
+388943128,388943131,US
+388943132,388943135,JP
+388943136,388943139,US
+388943140,388943143,JP
+388943144,388943147,US
+388943148,388943151,JP
+388943152,388943155,US
+388943156,388943159,JP
+388943160,388943163,US
+388943164,388943165,JP
+388943166,388943363,US
+388943364,388943367,JP
+388943368,388944131,US
+388944132,388944135,NZ
+388944136,388944139,US
+388944140,388944143,NZ
+388944144,388944147,US
+388944148,388944151,NZ
+388944152,388944155,US
+388944156,388944159,NZ
+388944160,388944163,US
+388944164,388944167,NZ
+388944168,388944172,US
+388944173,388944175,NZ
+388944176,388944179,US
+388944180,388944183,NZ
+388944184,388944187,US
+388944188,388944191,NZ
+388944192,388944195,US
+388944196,388944199,NZ
+388944200,388944895,US
388944896,388945919,NL
388945920,388956159,US
388956160,388960255,NL
388960256,388964351,US
388964352,388973567,NL
-388973568,388996095,US
+388973568,388974849,US
+388974850,388974853,AU
+388974854,388974857,US
+388974858,388974861,AU
+388974862,388974865,US
+388974866,388974869,AU
+388974870,388974873,US
+388974874,388974877,AU
+388974878,388974881,US
+388974882,388974885,AU
+388974886,388974889,US
+388974890,388974893,AU
+388974894,388974897,US
+388974898,388974901,AU
+388974902,388974905,US
+388974906,388974907,AU
+388974908,388974931,US
+388974932,388974933,AU
+388974934,388974938,US
+388974939,388974941,AU
+388974942,388974945,US
+388974946,388974949,AU
+388974950,388974953,US
+388974954,388974956,AU
+388974957,388974960,US
+388974961,388974964,AU
+388974965,388974968,US
+388974969,388974972,AU
+388974973,388974976,US
+388974977,388974980,AU
+388974981,388974984,US
+388974985,388974988,AU
+388974989,388974992,US
+388974993,388974995,AU
+388974996,388975000,US
+388975001,388975004,AU
+388975005,388975008,US
+388975009,388975012,AU
+388975013,388975016,US
+388975017,388975020,AU
+388975021,388975024,US
+388975025,388975028,AU
+388975029,388975032,US
+388975033,388975036,AU
+388975037,388975040,US
+388975041,388975043,AU
+388975044,388975048,US
+388975049,388975052,AU
+388975053,388975056,US
+388975057,388975060,AU
+388975061,388975064,US
+388975065,388975066,AU
+388975067,388987925,US
+388987926,388987929,JP
+388987930,388987933,US
+388987934,388987937,JP
+388987938,388987941,US
+388987942,388987945,JP
+388987946,388987949,US
+388987950,388987952,JP
+388987953,388987957,US
+388987958,388987958,JP
+388987959,388987959,US
+388987960,388987961,JP
+388987962,388987965,US
+388987966,388987966,JP
+388987967,388987968,US
+388987969,388987969,JP
+388987970,388987973,US
+388987974,388987977,JP
+388987978,388987981,US
+388987982,388987985,JP
+388987986,388996095,US
388996096,388997119,NL
388997120,389044223,US
389044224,389045247,NL
-389045248,389060607,US
+389045248,389046019,US
+389046020,389046023,AU
+389046024,389046027,US
+389046028,389046031,AU
+389046032,389046036,US
+389046037,389046038,AU
+389046039,389046043,US
+389046044,389046047,AU
+389046048,389046053,US
+389046054,389046055,AU
+389046056,389046243,US
+389046244,389046247,AU
+389046248,389046251,US
+389046252,389046255,AU
+389046256,389060607,US
389060608,389061631,NL
-389061632,389102079,US
+389061632,389064739,US
+389064740,389064743,MY
+389064744,389064747,US
+389064748,389064749,MY
+389064750,389064755,US
+389064756,389064759,MY
+389064760,389064763,US
+389064764,389064765,MY
+389064766,389064995,US
+389064996,389064999,SG
+389065000,389065003,US
+389065004,389065005,SG
+389065006,389065011,US
+389065012,389065015,SG
+389065016,389065019,US
+389065020,389065020,SG
+389065021,389076269,US
+389076270,389076271,JP
+389076272,389076275,US
+389076276,389076279,JP
+389076280,389076283,US
+389076284,389076287,JP
+389076288,389076291,US
+389076292,389076295,JP
+389076296,389076299,US
+389076300,389076303,JP
+389076304,389076307,US
+389076308,389076311,JP
+389076312,389076315,US
+389076316,389076319,JP
+389076320,389076323,US
+389076324,389076327,JP
+389076328,389076331,US
+389076332,389076335,JP
+389076336,389076339,US
+389076340,389076343,JP
+389076344,389076347,US
+389076348,389076351,JP
+389076352,389076355,US
+389076356,389076359,JP
+389076360,389076363,US
+389076364,389076367,JP
+389076368,389076371,US
+389076372,389076375,JP
+389076376,389076379,US
+389076380,389076383,JP
+389076384,389076409,US
+389076410,389076413,JP
+389076414,389076417,US
+389076418,389076419,JP
+389076420,389102079,US
389102080,389102591,NL
-389102592,389136383,US
+389102592,389102603,US
+389102604,389102607,SG
+389102608,389102611,US
+389102612,389102615,SG
+389102616,389102802,US
+389102803,389102806,SG
+389102807,389102810,US
+389102811,389102814,SG
+389102815,389102818,US
+389102819,389102822,SG
+389102823,389136383,US
389136384,389140479,NL
389140480,389153791,US
389153792,389154815,NL
389154816,389165055,US
-389165056,389169151,NL
+389165056,389165083,NL
+389165084,389165087,US
+389165088,389165091,NL
+389165092,389165095,US
+389165096,389165099,NL
+389165100,389165103,US
+389165104,389165125,NL
+389165126,389165129,US
+389165130,389165133,NL
+389165134,389165137,US
+389165138,389165141,NL
+389165142,389165145,US
+389165146,389165149,NL
+389165150,389165153,US
+389165154,389165157,NL
+389165158,389165161,US
+389165162,389165165,NL
+389165166,389165168,US
+389165169,389165173,NL
+389165174,389165177,US
+389165178,389165181,NL
+389165182,389165185,US
+389165186,389165189,NL
+389165190,389165193,US
+389165194,389165205,NL
+389165206,389165209,US
+389165210,389165213,NL
+389165214,389165217,US
+389165218,389165221,NL
+389165222,389165225,US
+389165226,389165229,NL
+389165230,389165233,US
+389165234,389165237,NL
+389165238,389165241,US
+389165242,389165245,NL
+389165246,389165249,US
+389165250,389165253,NL
+389165254,389165257,US
+389165258,389165261,NL
+389165262,389165265,US
+389165266,389165339,NL
+389165340,389165341,US
+389165342,389165342,NL
+389165343,389165343,US
+389165344,389165348,NL
+389165349,389165351,US
+389165352,389165355,NL
+389165356,389165359,US
+389165360,389165571,NL
+389165572,389165575,US
+389165576,389165579,NL
+389165580,389165583,US
+389165584,389165587,NL
+389165588,389165591,US
+389165592,389165837,NL
+389165838,389165839,US
+389165840,389165843,NL
+389165844,389165847,US
+389165848,389165851,NL
+389165852,389165855,US
+389165856,389165859,NL
+389165860,389165861,US
+389165862,389165875,NL
+389165876,389165879,US
+389165880,389165883,NL
+389165884,389165887,US
+389165888,389165891,NL
+389165892,389165892,US
+389165893,389165893,NL
+389165894,389165895,US
+389165896,389165899,NL
+389165900,389165903,US
+389165904,389165907,NL
+389165908,389165911,US
+389165912,389165915,NL
+389165916,389165919,US
+389165920,389165923,NL
+389165924,389165927,US
+389165928,389165931,NL
+389165932,389165935,US
+389165936,389165939,NL
+389165940,389165943,US
+389165944,389165947,NL
+389165948,389165951,US
+389165952,389165955,NL
+389165956,389165959,US
+389165960,389165963,NL
+389165964,389165967,US
+389165968,389166107,NL
+389166108,389166111,US
+389166112,389166115,NL
+389166116,389166119,US
+389166120,389166123,NL
+389166124,389166127,US
+389166128,389166363,NL
+389166364,389166367,US
+389166368,389166372,NL
+389166373,389166375,US
+389166376,389166379,NL
+389166380,389166383,US
+389166384,389166619,NL
+389166620,389166623,ES
+389166624,389166627,NL
+389166628,389166631,ES
+389166632,389166635,NL
+389166636,389166639,ES
+389166640,389166875,NL
+389166876,389166879,DE
+389166880,389166883,NL
+389166884,389166887,DE
+389166888,389166891,NL
+389166892,389166895,DE
+389166896,389167619,NL
+389167620,389167623,FR
+389167624,389167627,NL
+389167628,389167631,FR
+389167632,389167635,NL
+389167636,389167639,FR
+389167640,389167667,NL
+389167668,389167671,FR
+389167672,389167675,NL
+389167676,389167679,FR
+389167680,389167683,NL
+389167684,389167687,FR
+389167688,389167691,NL
+389167692,389167695,FR
+389167696,389167699,NL
+389167700,389167703,FR
+389167704,389167707,NL
+389167708,389167708,FR
+389167709,389167875,NL
+389167876,389167879,SE
+389167880,389167883,NL
+389167884,389167885,SE
+389167886,389167987,NL
+389167988,389167990,SE
+389167991,389167995,NL
+389167996,389167999,SE
+389168000,389168004,NL
+389168005,389168007,SE
+389168008,389168011,NL
+389168012,389168015,SE
+389168016,389168019,NL
+389168020,389168023,SE
+389168024,389168027,NL
+389168028,389168031,SE
+389168032,389168035,NL
+389168036,389168039,SE
+389168040,389168044,NL
+389168045,389168047,SE
+389168048,389168051,NL
+389168052,389168055,SE
+389168056,389168059,NL
+389168060,389168063,SE
+389168064,389168067,NL
+389168068,389168071,SE
+389168072,389168075,NL
+389168076,389168079,SE
+389168080,389168083,NL
+389168084,389168087,SE
+389168088,389168091,NL
+389168092,389168095,SE
+389168096,389168099,NL
+389168100,389168103,SE
+389168104,389168107,NL
+389168108,389168111,SE
+389168112,389168116,NL
+389168117,389168118,SE
+389168119,389168155,NL
+389168156,389168159,JP
+389168160,389168163,NL
+389168164,389168165,JP
+389168166,389168411,NL
+389168412,389168415,JP
+389168416,389168419,NL
+389168420,389168423,JP
+389168424,389168427,NL
+389168428,389168431,JP
+389168432,389168667,NL
+389168668,389168671,JP
+389168672,389168675,NL
+389168676,389168679,JP
+389168680,389168683,NL
+389168684,389168687,JP
+389168688,389168923,NL
+389168924,389168927,HK
+389168928,389168931,NL
+389168932,389168935,HK
+389168936,389168939,NL
+389168940,389168943,HK
+389168944,389168947,NL
+389168948,389168951,HK
+389168952,389168955,NL
+389168956,389168959,HK
+389168960,389168964,NL
+389168965,389168967,HK
+389168968,389168972,NL
+389168973,389168975,HK
+389168976,389168979,NL
+389168980,389168983,HK
+389168984,389168987,NL
+389168988,389168991,HK
+389168992,389168995,NL
+389168996,389168999,HK
+389169000,389169003,NL
+389169004,389169007,HK
+389169008,389169011,NL
+389169012,389169015,HK
+389169016,389169019,NL
+389169020,389169023,HK
+389169024,389169027,NL
+389169028,389169028,HK
+389169029,389169029,NL
+389169030,389169031,HK
+389169032,389169036,NL
+389169037,389169039,HK
+389169040,389169043,NL
+389169044,389169047,HK
+389169048,389169051,NL
+389169052,389169055,HK
+389169056,389169059,NL
+389169060,389169063,HK
+389169064,389169067,NL
+389169068,389169071,HK
+389169072,389169077,NL
+389169078,389169079,HK
+389169080,389169083,NL
+389169084,389169087,HK
+389169088,389169091,NL
+389169092,389169095,HK
+389169096,389169100,NL
+389169101,389169103,HK
+389169104,389169107,NL
+389169108,389169111,HK
+389169112,389169115,NL
+389169116,389169119,HK
+389169120,389169123,NL
+389169124,389169127,HK
+389169128,389169131,NL
+389169132,389169135,HK
+389169136,389169151,NL
389169152,389177343,US
389177344,389181439,NL
389181440,389189631,US
389189632,389201919,NL
-389201920,389242879,US
+389201920,389210243,US
+389210244,389210247,JP
+389210248,389210251,US
+389210252,389210255,JP
+389210256,389210259,US
+389210260,389210263,JP
+389210264,389210267,US
+389210268,389210269,JP
+389210270,389210277,US
+389210278,389210279,JP
+389210280,389210283,US
+389210284,389210287,JP
+389210288,389210291,US
+389210292,389210295,JP
+389210296,389210299,US
+389210300,389210303,JP
+389210304,389210307,US
+389210308,389210311,JP
+389210312,389210315,US
+389210316,389210319,JP
+389210320,389210323,US
+389210324,389210327,JP
+389210328,389210331,US
+389210332,389210333,JP
+389210334,389242879,US
389242880,389251071,NL
389251072,389273599,US
389273600,389283839,NL
@@ -4486,10 +7696,60 @@
389286912,389293055,NL
389293056,389296127,US
389296128,389300223,NL
-389300224,389319167,US
+389300224,389301011,US
+389301012,389301015,ZA
+389301016,389301019,US
+389301020,389301023,ZA
+389301024,389301027,US
+389301028,389301028,ZA
+389301029,389301029,US
+389301030,389301031,ZA
+389301032,389301035,US
+389301036,389301039,ZA
+389301040,389301043,US
+389301044,389301047,ZA
+389301048,389311027,US
+389311028,389311031,JP
+389311032,389311035,US
+389311036,389311036,JP
+389311037,389311037,US
+389311038,389311039,JP
+389311040,389311043,US
+389311044,389311047,JP
+389311048,389311051,US
+389311052,389311055,JP
+389311056,389311059,US
+389311060,389311063,JP
+389311064,389311067,US
+389311068,389311071,JP
+389311072,389311075,US
+389311076,389311079,JP
+389311080,389311083,US
+389311084,389311087,JP
+389311088,389311107,US
+389311108,389311111,JP
+389311112,389311115,US
+389311116,389311119,JP
+389311120,389311123,US
+389311124,389311127,JP
+389311128,389311131,US
+389311132,389311135,JP
+389311136,389319167,US
389319168,389319679,NL
389319680,389320191,US
-389320192,389320447,NL
+389320192,389320341,NL
+389320342,389320342,GB
+389320343,389320343,NL
+389320344,389320345,GB
+389320346,389320349,NL
+389320350,389320351,GB
+389320352,389320352,NL
+389320353,389320353,GB
+389320354,389320357,NL
+389320358,389320361,GB
+389320362,389320365,NL
+389320366,389320367,GB
+389320368,389320447,NL
389320448,389350655,US
389350656,389351167,NL
389351168,389352191,US
@@ -4504,24 +7764,362 @@
389413376,389413887,NL
389413888,389414911,US
389414912,389419007,NL
-389419008,389439487,US
+389419008,389422593,US
+389422594,389422597,AU
+389422598,389422601,US
+389422602,389422605,AU
+389422606,389422609,US
+389422610,389422613,AU
+389422614,389422617,US
+389422618,389422621,AU
+389422622,389422625,US
+389422626,389422629,AU
+389422630,389422633,US
+389422634,389422637,AU
+389422638,389422641,US
+389422642,389422645,AU
+389422646,389422649,US
+389422650,389422651,AU
+389422652,389439487,US
389439488,389444607,NL
389444608,389444863,US
389444864,389445631,NL
-389445632,389447679,US
+389445632,389446659,US
+389446660,389446663,JP
+389446664,389446667,US
+389446668,389446671,JP
+389446672,389446675,US
+389446676,389446679,JP
+389446680,389446683,US
+389446684,389446687,JP
+389446688,389446691,US
+389446692,389446695,JP
+389446696,389446699,US
+389446700,389446703,JP
+389446704,389446707,US
+389446708,389446711,JP
+389446712,389446715,US
+389446716,389446719,JP
+389446720,389446723,US
+389446724,389446727,JP
+389446728,389447679,US
389447680,389451775,NL
389451776,389455359,US
389455360,389455615,NL
-389455616,389517311,US
+389455616,389455619,US
+389455620,389455623,ZA
+389455624,389455627,US
+389455628,389455631,ZA
+389455632,389455635,US
+389455636,389455639,ZA
+389455640,389455643,US
+389455644,389455647,ZA
+389455648,389455651,US
+389455652,389455653,ZA
+389455654,389491715,US
+389491716,389491719,JP
+389491720,389491723,US
+389491724,389491727,JP
+389491728,389491731,US
+389491732,389491735,JP
+389491736,389491739,US
+389491740,389491743,JP
+389491744,389491747,US
+389491748,389491751,JP
+389491752,389491755,US
+389491756,389491759,JP
+389491760,389491763,US
+389491764,389491767,JP
+389491768,389491771,US
+389491772,389491775,JP
+389491776,389491779,US
+389491780,389491783,JP
+389491784,389491787,US
+389491788,389491791,JP
+389491792,389491795,US
+389491796,389491799,JP
+389491800,389491803,US
+389491804,389491807,JP
+389491808,389491811,US
+389491812,389491813,JP
+389491814,389492011,US
+389492012,389492015,JP
+389492016,389492019,US
+389492020,389492023,JP
+389492024,389492027,US
+389492028,389492031,JP
+389492032,389492035,US
+389492036,389492039,JP
+389492040,389492043,US
+389492044,389492047,JP
+389492048,389492051,US
+389492052,389492055,JP
+389492056,389492059,US
+389492060,389492063,JP
+389492064,389492067,US
+389492068,389492071,JP
+389492072,389492075,US
+389492076,389492079,JP
+389492080,389492083,US
+389492084,389492087,JP
+389492088,389492099,US
+389492100,389492103,JP
+389492104,389492107,US
+389492108,389492111,JP
+389492112,389492115,US
+389492116,389492119,JP
+389492120,389492123,US
+389492124,389492127,JP
+389492128,389492131,US
+389492132,389492135,JP
+389492136,389492139,US
+389492140,389492143,JP
+389492144,389492227,US
+389492228,389492231,HK
+389492232,389492235,US
+389492236,389492239,HK
+389492240,389492243,US
+389492244,389492247,HK
+389492248,389492251,US
+389492252,389492255,HK
+389492256,389492259,US
+389492260,389492263,HK
+389492264,389492267,US
+389492268,389492271,HK
+389492272,389492275,US
+389492276,389492279,HK
+389492280,389492283,US
+389492284,389492284,HK
+389492285,389492285,US
+389492286,389492287,HK
+389492288,389492291,US
+389492292,389492295,HK
+389492296,389492299,US
+389492300,389492303,HK
+389492304,389492307,US
+389492308,389492311,HK
+389492312,389492315,US
+389492316,389492319,HK
+389492320,389492323,US
+389492324,389492327,HK
+389492328,389492331,US
+389492332,389492333,HK
+389492334,389492334,US
+389492335,389492335,HK
+389492336,389492339,US
+389492340,389492343,HK
+389492344,389492347,US
+389492348,389492351,HK
+389492352,389492356,US
+389492357,389492359,HK
+389492360,389492363,US
+389492364,389492366,HK
+389492367,389492371,US
+389492372,389492375,HK
+389492376,389492379,US
+389492380,389492381,HK
+389492382,389492382,US
+389492383,389492383,HK
+389492384,389492387,US
+389492388,389492391,HK
+389492392,389492395,US
+389492396,389492399,HK
+389492400,389492403,US
+389492404,389492407,HK
+389492408,389492412,US
+389492413,389492415,HK
+389492416,389492419,US
+389492420,389492423,HK
+389492424,389492427,US
+389492428,389492431,HK
+389492432,389492435,US
+389492436,389492439,HK
+389492440,389492444,US
+389492445,389492447,HK
+389492448,389492451,US
+389492452,389492455,HK
+389492456,389492459,US
+389492460,389492463,HK
+389492464,389492467,US
+389492468,389492470,HK
+389492471,389492483,US
+389492484,389492485,HK
+389492486,389492486,US
+389492487,389492487,HK
+389492488,389492491,US
+389492492,389492495,HK
+389492496,389492499,US
+389492500,389492503,HK
+389492504,389492507,US
+389492508,389492511,HK
+389492512,389492515,US
+389492516,389492519,HK
+389492520,389492523,US
+389492524,389492527,HK
+389492528,389492531,US
+389492532,389492535,HK
+389492536,389492539,US
+389492540,389492543,HK
+389492544,389492547,US
+389492548,389492551,HK
+389492552,389492555,US
+389492556,389492559,HK
+389492560,389492563,US
+389492564,389492567,HK
+389492568,389492571,US
+389492572,389492575,HK
+389492576,389492579,US
+389492580,389492583,HK
+389492584,389492587,US
+389492588,389492591,HK
+389492592,389492595,US
+389492596,389492599,HK
+389492600,389492603,US
+389492604,389492607,HK
+389492608,389492611,US
+389492612,389492615,HK
+389492616,389494869,US
+389494870,389494873,JP
+389494874,389494877,US
+389494878,389494881,JP
+389494882,389494885,US
+389494886,389494889,JP
+389494890,389494893,US
+389494894,389494897,JP
+389494898,389494901,US
+389494902,389494905,JP
+389494906,389494909,US
+389494910,389494911,JP
+389494912,389494991,US
+389494992,389494993,JP
+389494994,389494997,US
+389494998,389495001,JP
+389495002,389495005,US
+389495006,389495009,JP
+389495010,389495013,US
+389495014,389495017,JP
+389495018,389495021,US
+389495022,389495025,JP
+389495026,389495029,US
+389495030,389495031,JP
+389495032,389495295,US
+389495296,389495597,NL
+389495598,389495599,GB
+389495600,389495603,NL
+389495604,389495607,GB
+389495608,389495614,NL
+389495615,389495618,GB
+389495619,389495622,NL
+389495623,389495623,GB
+389495624,389495624,NL
+389495625,389495626,GB
+389495627,389495630,NL
+389495631,389495631,GB
+389495632,389495632,NL
+389495633,389495634,GB
+389495635,389495638,NL
+389495639,389495642,GB
+389495643,389495646,NL
+389495647,389495650,GB
+389495651,389495654,NL
+389495655,389495658,GB
+389495659,389495662,NL
+389495663,389495666,GB
+389495667,389495670,NL
+389495671,389495673,GB
+389495674,389495763,NL
+389495764,389495765,GB
+389495766,389495766,NL
+389495767,389495767,GB
+389495768,389495771,NL
+389495772,389495775,GB
+389495776,389495779,NL
+389495780,389495783,GB
+389495784,389495787,NL
+389495788,389495789,GB
+389495790,389495790,NL
+389495791,389495791,GB
+389495792,389495795,NL
+389495796,389495799,GB
+389495800,389495807,NL
+389495808,389517311,US
389517312,389521407,NL
-389521408,389554175,US
+389521408,389537315,US
+389537316,389537317,AU
+389537318,389537318,US
+389537319,389537319,AU
+389537320,389537323,US
+389537324,389537324,AU
+389537325,389537325,US
+389537326,389537327,AU
+389537328,389537331,US
+389537332,389537335,AU
+389537336,389537339,US
+389537340,389537343,AU
+389537344,389537347,US
+389537348,389537351,AU
+389537352,389537355,US
+389537356,389537358,AU
+389537359,389554175,US
389554176,389562367,NL
389562368,389571071,US
389571072,389571583,NL
389571584,389572863,US
389572864,389573119,NL
-389573120,389573887,US
-389573888,389574143,NL
+389573120,389573635,US
+389573636,389573639,JP
+389573640,389573643,US
+389573644,389573647,JP
+389573648,389573651,US
+389573652,389573655,JP
+389573656,389573659,US
+389573660,389573663,JP
+389573664,389573667,US
+389573668,389573668,JP
+389573669,389573669,US
+389573670,389573671,JP
+389573672,389573675,US
+389573676,389573679,JP
+389573680,389573683,US
+389573684,389573687,JP
+389573688,389573691,US
+389573692,389573695,JP
+389573696,389573699,US
+389573700,389573703,JP
+389573704,389573707,US
+389573708,389573711,JP
+389573712,389573715,US
+389573716,389573719,JP
+389573720,389573724,US
+389573725,389573725,JP
+389573726,389573726,US
+389573727,389573727,JP
+389573728,389573731,US
+389573732,389573735,JP
+389573736,389573739,US
+389573740,389573742,JP
+389573743,389573747,US
+389573748,389573749,JP
+389573750,389573887,US
+389573888,389573939,NL
+389573940,389573940,FR
+389573941,389573941,NL
+389573942,389573943,FR
+389573944,389573947,NL
+389573948,389573951,FR
+389573952,389573955,NL
+389573956,389573959,FR
+389573960,389573963,NL
+389573964,389573967,FR
+389573968,389573971,NL
+389573972,389573975,FR
+389573976,389573979,NL
+389573980,389573983,FR
+389573984,389573987,NL
+389573988,389573991,FR
+389573992,389573995,NL
+389573996,389573998,FR
+389573999,389574143,NL
389574144,389591039,US
389591040,389592063,NL
389592064,389593087,US
@@ -4530,37 +8128,363 @@
389612544,389613567,NL
389613568,389615615,US
389615616,389619711,NL
-389619712,389631999,US
+389619712,389628675,US
+389628676,389628679,AU
+389628680,389628683,US
+389628684,389628687,AU
+389628688,389628691,US
+389628692,389628695,AU
+389628696,389628699,US
+389628700,389628703,AU
+389628704,389628707,US
+389628708,389628711,AU
+389628712,389628715,US
+389628716,389628719,AU
+389628720,389628723,US
+389628724,389628727,AU
+389628728,389628731,US
+389628732,389628735,AU
+389628736,389628739,US
+389628740,389628741,AU
+389628742,389629215,US
+389629216,389629219,IN
+389629220,389629223,US
+389629224,389629226,IN
+389629227,389629294,US
+389629295,389629298,IN
+389629299,389629302,US
+389629303,389629305,IN
+389629306,389629323,US
+389629324,389629327,IN
+389629328,389629331,US
+389629332,389629334,IN
+389629335,389629338,US
+389629339,389629344,IN
+389629345,389629345,US
+389629346,389629346,IN
+389629347,389629356,US
+389629357,389629358,IN
+389629359,389629362,US
+389629363,389629365,IN
+389629366,389630523,US
+389630524,389630526,IN
+389630527,389630531,US
+389630532,389630533,IN
+389630534,389630539,US
+389630540,389630547,IN
+389630548,389630763,US
+389630764,389630766,IN
+389630767,389630771,US
+389630772,389630772,IN
+389630773,389630774,US
+389630775,389630779,IN
+389630780,389630783,US
+389630784,389630785,IN
+389630786,389630993,US
+389630994,389630996,IN
+389630997,389631003,US
+389631004,389631004,IN
+389631005,389631009,US
+389631010,389631011,IN
+389631012,389631015,US
+389631016,389631019,IN
+389631020,389631023,US
+389631024,389631027,IN
+389631028,389631031,US
+389631032,389631035,IN
+389631036,389631039,US
+389631040,389631041,IN
+389631042,389631119,US
+389631120,389631123,IN
+389631124,389631127,US
+389631128,389631130,IN
+389631131,389631999,US
389632000,389635071,NL
389635072,389636095,US
389636096,389640191,NL
389640192,389700863,US
389700864,389701119,NL
-389701120,389732351,US
+389701120,389701123,US
+389701124,389701126,BR
+389701127,389701133,US
+389701134,389701134,BR
+389701135,389701140,US
+389701141,389701142,BR
+389701143,389701149,US
+389701150,389701150,BR
+389701151,389701157,US
+389701158,389701159,BR
+389701160,389732351,US
389732352,389733375,NL
389733376,389733887,US
-389733888,389734399,NL
+389733888,389734147,NL
+389734148,389734151,TR
+389734152,389734155,NL
+389734156,389734159,TR
+389734160,389734163,NL
+389734164,389734167,TR
+389734168,389734171,NL
+389734172,389734175,TR
+389734176,389734179,NL
+389734180,389734183,TR
+389734184,389734187,NL
+389734188,389734191,TR
+389734192,389734195,NL
+389734196,389734199,TR
+389734200,389734203,NL
+389734204,389734207,TR
+389734208,389734211,NL
+389734212,389734213,TR
+389734214,389734220,NL
+389734221,389734223,TR
+389734224,389734227,NL
+389734228,389734231,TR
+389734232,389734235,NL
+389734236,389734239,TR
+389734240,389734243,NL
+389734244,389734247,TR
+389734248,389734251,NL
+389734252,389734255,TR
+389734256,389734259,NL
+389734260,389734263,TR
+389734264,389734399,NL
389734400,389759999,US
389760000,389761023,NL
-389761024,389764095,US
+389761024,389761101,US
+389761102,389761103,KR
+389761104,389761107,US
+389761108,389761111,KR
+389761112,389761115,US
+389761116,389761119,KR
+389761120,389761123,US
+389761124,389761127,KR
+389761128,389761131,US
+389761132,389761135,KR
+389761136,389761139,US
+389761140,389761143,KR
+389761144,389761155,US
+389761156,389761159,KR
+389761160,389761163,US
+389761164,389761167,KR
+389761168,389761171,US
+389761172,389761175,KR
+389761176,389761179,US
+389761180,389761183,KR
+389761184,389761187,US
+389761188,389761191,KR
+389761192,389761195,US
+389761196,389761199,KR
+389761200,389761203,US
+389761204,389761207,KR
+389761208,389761219,US
+389761220,389761223,KR
+389761224,389764095,US
389764096,389765631,NL
389765632,389767167,US
389767168,389775359,NL
-389775360,389812223,US
+389775360,389781251,US
+389781252,389781255,KR
+389781256,389781259,US
+389781260,389781263,KR
+389781264,389781267,US
+389781268,389781271,KR
+389781272,389781275,US
+389781276,389781279,KR
+389781280,389781283,US
+389781284,389781287,KR
+389781288,389781291,US
+389781292,389781295,KR
+389781296,389781299,US
+389781300,389781303,KR
+389781304,389781307,US
+389781308,389781311,KR
+389781312,389781315,US
+389781316,389781319,KR
+389781320,389781323,US
+389781324,389781327,KR
+389781328,389781331,US
+389781332,389781335,KR
+389781336,389781339,US
+389781340,389781343,KR
+389781344,389781347,US
+389781348,389781351,KR
+389781352,389781355,US
+389781356,389781359,KR
+389781360,389781363,US
+389781364,389781367,KR
+389781368,389781371,US
+389781372,389781372,KR
+389781373,389782107,US
+389782108,389782111,CA
+389782112,389782115,US
+389782116,389782119,CA
+389782120,389782123,US
+389782124,389782127,CA
+389782128,389782131,US
+389782132,389782135,CA
+389782136,389782139,US
+389782140,389782143,CA
+389782144,389782147,US
+389782148,389782151,CA
+389782152,389782155,US
+389782156,389782159,CA
+389782160,389782163,US
+389782164,389782167,CA
+389782168,389782171,US
+389782172,389782175,CA
+389782176,389782179,US
+389782180,389782183,CA
+389782184,389782187,US
+389782188,389782191,CA
+389782192,389782195,US
+389782196,389782199,CA
+389782200,389782203,US
+389782204,389782207,CA
+389782208,389782211,US
+389782212,389782215,CA
+389782216,389782221,US
+389782222,389782223,CA
+389782224,389782227,US
+389782228,389782231,CA
+389782232,389782235,US
+389782236,389782239,CA
+389782240,389782243,US
+389782244,389782247,CA
+389782248,389782251,US
+389782252,389782255,CA
+389782256,389789277,US
+389789278,389789279,AU
+389789280,389789283,US
+389789284,389789287,AU
+389789288,389789292,US
+389789293,389789295,AU
+389789296,389789299,US
+389789300,389789303,AU
+389789304,389789307,US
+389789308,389789311,AU
+389789312,389789315,US
+389789316,389789319,AU
+389789320,389789323,US
+389789324,389789327,AU
+389789328,389789331,US
+389789332,389789335,AU
+389789336,389789339,US
+389789340,389789343,AU
+389789344,389789347,US
+389789348,389789351,AU
+389789352,389789355,US
+389789356,389789356,AU
+389789357,389789357,US
+389789358,389789359,AU
+389789360,389789363,US
+389789364,389789367,AU
+389789368,389789371,US
+389789372,389789375,AU
+389789376,389789379,US
+389789380,389789383,AU
+389789384,389789387,US
+389789388,389789391,AU
+389789392,389789402,US
+389789403,389789406,AU
+389789407,389789410,US
+389789411,389789411,AU
+389789412,389789443,US
+389789444,389789447,JP
+389789448,389789451,US
+389789452,389789455,JP
+389789456,389789459,US
+389789460,389789463,JP
+389789464,389812223,US
389812224,389816319,NL
389816320,389825791,US
-389825792,389826047,NL
+389825792,389825986,NL
+389825987,389825990,SE
+389825991,389825991,NL
+389825992,389825995,SE
+389825996,389825996,NL
+389825997,389826000,SE
+389826001,389826001,NL
+389826002,389826002,SE
+389826003,389826047,NL
389826048,389857279,US
389857280,389873663,NL
-389873664,389874687,US
+389873664,389873737,US
+389873738,389873741,SG
+389873742,389873746,US
+389873747,389873747,SG
+389873748,389874687,US
389874688,389875711,NL
389875712,389923839,US
389923840,389924351,NL
389924352,389926911,US
389926912,389936127,NL
-389936128,389939711,US
+389936128,389936131,US
+389936132,389936135,JP
+389936136,389936139,US
+389936140,389936143,JP
+389936144,389936147,US
+389936148,389936151,JP
+389936152,389936155,US
+389936156,389936159,JP
+389936160,389936163,US
+389936164,389936166,JP
+389936167,389936171,US
+389936172,389936175,JP
+389936176,389936179,US
+389936180,389936183,JP
+389936184,389936187,US
+389936188,389936191,JP
+389936192,389936195,US
+389936196,389936199,JP
+389936200,389936203,US
+389936204,389936207,JP
+389936208,389936211,US
+389936212,389936215,JP
+389936216,389936219,US
+389936220,389936221,JP
+389936222,389937726,US
+389937727,389937727,JP
+389937728,389937731,US
+389937732,389937735,JP
+389937736,389937771,US
+389937772,389937783,JP
+389937784,389937939,US
+389937940,389937943,JP
+389937944,389937947,US
+389937948,389937948,JP
+389937949,389937949,US
+389937950,389937951,JP
+389937952,389937955,US
+389937956,389937959,JP
+389937960,389937963,US
+389937964,389937967,JP
+389937968,389937971,US
+389937972,389937975,JP
+389937976,389937979,US
+389937980,389937983,JP
+389937984,389937987,US
+389937988,389937991,JP
+389937992,389939711,US
389939712,389940223,NL
-389940224,389941503,US
+389940224,389941251,US
+389941252,389941261,AU
+389941262,389941262,US
+389941263,389941265,AU
+389941266,389941266,US
+389941267,389941269,AU
+389941270,389941270,US
+389941271,389941271,AU
+389941272,389941272,US
+389941273,389941276,AU
+389941277,389941277,US
+389941278,389941278,AU
+389941279,389941279,US
+389941280,389941281,AU
+389941282,389941317,US
+389941318,389941321,AU
+389941322,389941325,US
+389941326,389941327,AU
+389941328,389941503,US
389941504,389941759,NL
389941760,389954815,US
389954816,389955071,NL
@@ -4570,16 +8494,70 @@
389965312,389966335,NL
389966336,389967871,US
389967872,389977087,NL
-389977088,389979156,US
-389979157,389979157,AU
-389979158,389979189,US
-389979190,389979190,AU
-389979191,389988351,US
+389977088,389979155,US
+389979156,389979159,AU
+389979160,389979163,US
+389979164,389979167,AU
+389979168,389979171,US
+389979172,389979175,AU
+389979176,389979179,US
+389979180,389979183,AU
+389979184,389979187,US
+389979188,389979191,AU
+389979192,389979195,US
+389979196,389979199,AU
+389979200,389979203,US
+389979204,389979207,AU
+389979208,389979211,US
+389979212,389979213,AU
+389979214,389979218,US
+389979219,389979221,AU
+389979222,389979225,US
+389979226,389979227,AU
+389979228,389979419,US
+389979420,389979426,AU
+389979427,389979433,US
+389979434,389979434,AU
+389979435,389979447,US
+389979448,389979449,AU
+389979450,389979480,US
+389979481,389979481,AU
+389979482,389979486,US
+389979487,389979490,AU
+389979491,389988351,US
389988352,389992447,NL
389992448,389996543,US
389996544,389996799,NL
389996800,389996800,SG
-389996801,390027263,US
+389996801,389997059,US
+389997060,389997063,JP
+389997064,389997067,US
+389997068,389997071,JP
+389997072,389997075,US
+389997076,389997079,JP
+389997080,389997083,US
+389997084,389997087,JP
+389997088,389997091,US
+389997092,389997095,JP
+389997096,389997099,US
+389997100,389997103,JP
+389997104,389997107,US
+389997108,389997111,JP
+389997112,389997115,US
+389997116,389997119,JP
+389997120,389997123,US
+389997124,389997127,JP
+389997128,389997131,US
+389997132,389997132,JP
+389997133,389997156,US
+389997157,389997157,JP
+389997158,389997189,US
+389997190,389997191,JP
+389997192,389997195,US
+389997196,389997199,JP
+389997200,389997203,US
+389997204,389997205,JP
+389997206,390027263,US
390027264,390028287,NL
390028288,390028543,US
390028544,390029311,NL
@@ -4600,10 +8578,64 @@
390131712,390141439,US
390141440,390141695,NL
390141696,390143231,US
-390143232,390143999,NL
+390143232,390143315,NL
+390143316,390143340,DK
+390143341,390143999,NL
390144000,390165503,US
390165504,390166527,NL
-390166528,390184959,US
+390166528,390167593,US
+390167594,390167597,IN
+390167598,390167601,US
+390167602,390167605,IN
+390167606,390167609,US
+390167610,390167613,IN
+390167614,390167617,US
+390167618,390167621,IN
+390167622,390167625,US
+390167626,390167629,IN
+390167630,390167633,US
+390167634,390167634,IN
+390167635,390182778,US
+390182779,390182782,JP
+390182783,390182786,US
+390182787,390182790,JP
+390182791,390182794,US
+390182795,390182798,JP
+390182799,390182802,US
+390182803,390182805,JP
+390182806,390182812,US
+390182813,390182814,JP
+390182815,390182818,US
+390182819,390182822,JP
+390182823,390182826,US
+390182827,390182830,JP
+390182831,390182834,US
+390182835,390182838,JP
+390182839,390182842,US
+390182843,390182846,JP
+390182847,390182850,US
+390182851,390182854,JP
+390182855,390182858,US
+390182859,390182860,JP
+390182861,390182861,US
+390182862,390182862,JP
+390182863,390182866,US
+390182867,390182870,JP
+390182871,390182874,US
+390182875,390182876,JP
+390182877,390183965,US
+390183966,390183967,KR
+390183968,390183971,US
+390183972,390183975,KR
+390183976,390183979,US
+390183980,390183983,KR
+390183984,390183987,US
+390183988,390183991,KR
+390183992,390183995,US
+390183996,390183999,KR
+390184000,390184003,US
+390184004,390184007,KR
+390184008,390184959,US
390184960,390189055,NL
390189056,390205439,US
390205440,390209535,NL
@@ -4611,11 +8643,61 @@
390261248,390261759,NL
390261760,390278911,US
390278912,390279167,NL
-390279168,390286847,US
+390279168,390280502,US
+390280503,390280503,KR
+390280504,390280507,US
+390280508,390280508,KR
+390280509,390280509,US
+390280510,390280511,KR
+390280512,390280515,US
+390280516,390280519,KR
+390280520,390280523,US
+390280524,390280527,KR
+390280528,390280531,US
+390280532,390280535,KR
+390280536,390280539,US
+390280540,390280543,KR
+390280544,390280547,US
+390280548,390280548,KR
+390280549,390280564,US
+390280565,390280567,KR
+390280568,390280643,US
+390280644,390280647,KR
+390280648,390280651,US
+390280652,390280654,KR
+390280655,390286847,US
390286848,390287359,NL
390287360,390299647,US
390299648,390303743,NL
-390303744,390897151,US
+390303744,390797179,US
+390797180,390797190,SG
+390797191,390797191,US
+390797192,390797192,SG
+390797193,390797193,US
+390797194,390797196,SG
+390797197,390797197,US
+390797198,390797201,SG
+390797202,390797275,US
+390797276,390797278,SG
+390797279,390797282,US
+390797283,390797286,SG
+390797287,390896747,US
+390896748,390896751,IN
+390896752,390896755,US
+390896756,390896759,IN
+390896760,390896763,US
+390896764,390896767,IN
+390896768,390896771,US
+390896772,390896775,IN
+390896776,390896779,US
+390896780,390896783,IN
+390896784,390896787,US
+390896788,390896791,IN
+390896792,390896795,US
+390896796,390896799,IN
+390896800,390896819,US
+390896820,390896820,IN
+390896821,390897151,US
390897152,390897663,NL
390897664,390938623,US
390938624,390942719,NL
@@ -4632,10 +8714,9 @@
391020544,391110655,US
391110656,391110911,IL
391110912,391111167,GB
-391111168,391111935,NL
+391111168,391111935,US
391111936,391112063,AU
-391112064,391112703,NL
-391112704,391331839,US
+391112064,391331839,US
391331840,391333887,NL
391333888,391344127,US
391344128,391348223,NL
@@ -4728,23 +8809,30 @@
392660352,392660383,IE
392660384,392660415,FI
392660416,392660447,AT
-392660448,392660479,US
+392660448,392660479,IE
392660480,392660511,AT
392660512,392660543,US
392660544,392660575,AE
392660576,392660607,US
392660608,392660703,GB
-392660704,392660735,US
+392660704,392660735,AE
392660736,392660799,FR
-392660800,392661503,US
+392660800,392661279,US
+392661280,392661311,HK
+392661312,392661503,US
392661504,392661519,KR
392661520,392661551,JP
-392661552,392661855,US
+392661552,392661599,US
+392661600,392661647,SG
+392661648,392661727,US
+392661728,392661759,SG
+392661760,392661855,US
392661856,392661887,ZA
392661888,392661951,JP
392661952,392662143,US
392662144,392662239,IN
-392662240,392662399,US
+392662240,392662271,ZA
+392662272,392662399,US
392662400,392662495,KR
392662496,392662511,HK
392662512,392662527,SG
@@ -4794,9 +8882,7 @@
392674976,392675023,IE
392675024,392675039,US
392675040,392675071,SG
-392675072,392684511,US
-392684512,392684527,NL
-392684528,392684815,US
+392675072,392684815,US
392684816,392684831,IE
392684832,392685007,US
392685008,392685023,IE
@@ -4984,7 +9070,9 @@
394313728,394313983,US
394321920,394322175,CA
394330112,394330623,US
-394338304,394338559,CA
+394338304,394338367,CA
+394338368,394338399,US
+394338400,394338559,CA
394346496,394362879,US
394362880,394363135,GB
394363136,394395903,US
@@ -5055,7 +9143,7 @@
395599872,395600127,CA
395608064,395608319,CA
395616256,395616511,US
-395624448,395624703,CA
+395624448,395624959,CA
395632640,395632895,US
395640832,395673599,US
395673600,395673855,CA
@@ -5084,7 +9172,7 @@
396034048,396050431,US
396050432,396050687,CA
396058624,396058879,US
-396066816,396067327,CA
+396066816,396067583,CA
396075008,396075263,US
396091392,396091647,US
396099584,396099839,US
@@ -5110,14 +9198,24 @@
396623872,396648447,US
396648448,396648703,CA
396648704,396754943,US
-396754944,396755199,CA
+396754944,396771327,CA
396771328,396771583,US
+396779520,396779775,US
396787712,396820735,US
+396828672,396828927,US
396836864,396837119,CA
-396853248,397115391,US
-397115392,397115647,CA
-397131776,397132031,US
-397148160,397377535,US
+396845056,396845311,US
+396853248,396877823,US
+396877824,396878079,CA
+396878080,396959743,US
+396959744,396959999,CA
+396960000,397025279,US
+397025280,397025535,CA
+397025536,397115391,US
+397115392,397131775,CA
+397131776,397156351,US
+397156352,397156607,PR
+397156608,397377535,US
397377536,397377791,CA
397393920,397394175,US
397410304,397410559,CA
@@ -5142,7 +9240,7 @@
397836288,397836799,CA
397852672,397852927,US
397869056,397902079,US
-397918208,397918463,CA
+397918208,397918719,CA
397934592,398065663,US
398065664,398066175,CA
398082048,398082303,JP
@@ -5162,12 +9260,112 @@
398426112,398426623,CA
398442496,398442751,US
398458880,398500351,US
-398500352,398500863,NL
+398500352,398500707,NL
+398500708,398500717,GB
+398500718,398500718,NL
+398500719,398500722,GB
+398500723,398500723,NL
+398500724,398500725,GB
+398500726,398500726,NL
+398500727,398500733,GB
+398500734,398500769,NL
+398500770,398500774,GB
+398500775,398500775,NL
+398500776,398500782,GB
+398500783,398500783,NL
+398500784,398500788,GB
+398500789,398500863,NL
398500864,398566911,US
398566912,398567423,NL
-398567424,398640127,US
+398567424,398568509,US
+398568510,398568511,MX
+398568512,398568515,US
+398568516,398568519,MX
+398568520,398568523,US
+398568524,398568527,MX
+398568528,398568531,US
+398568532,398568535,MX
+398568536,398568539,US
+398568540,398568543,MX
+398568544,398568547,US
+398568548,398568551,MX
+398568552,398568555,US
+398568556,398568559,MX
+398568560,398568563,US
+398568564,398568567,MX
+398568568,398619395,US
+398619396,398619399,JP
+398619400,398619403,US
+398619404,398619407,JP
+398619408,398619411,US
+398619412,398619415,JP
+398619416,398619419,US
+398619420,398619423,JP
+398619424,398619427,US
+398619428,398619431,JP
+398619432,398619435,US
+398619436,398619439,JP
+398619440,398619443,US
+398619444,398619447,JP
+398619448,398619451,US
+398619452,398619455,JP
+398619456,398619459,US
+398619460,398619463,JP
+398619464,398637994,US
+398637995,398637998,SG
+398637999,398638002,US
+398638003,398638006,SG
+398638007,398638010,US
+398638011,398638014,SG
+398638015,398638018,US
+398638019,398638019,SG
+398638020,398638020,US
+398638021,398638022,SG
+398638023,398638027,US
+398638028,398638030,SG
+398638031,398638034,US
+398638035,398638038,SG
+398638039,398638042,US
+398638043,398638046,SG
+398638047,398638050,US
+398638051,398638054,SG
+398638055,398638058,US
+398638059,398638062,SG
+398638063,398638066,US
+398638067,398638070,SG
+398638071,398640127,US
398640128,398641151,NL
-398641152,398642175,US
+398641152,398641411,US
+398641412,398641415,JP
+398641416,398641419,US
+398641420,398641423,JP
+398641424,398641427,US
+398641428,398641431,JP
+398641432,398641435,US
+398641436,398641439,JP
+398641440,398641443,US
+398641444,398641447,JP
+398641448,398641451,US
+398641452,398641455,JP
+398641456,398641459,US
+398641460,398641461,JP
+398641462,398641462,US
+398641463,398641463,JP
+398641464,398641467,US
+398641468,398641471,JP
+398641472,398641475,US
+398641476,398641478,JP
+398641479,398641483,US
+398641484,398641487,JP
+398641488,398641491,US
+398641492,398641495,JP
+398641496,398641499,US
+398641500,398641503,JP
+398641504,398641507,US
+398641508,398641511,JP
+398641512,398641515,US
+398641516,398641516,JP
+398641517,398642175,US
398642176,398643199,NL
398643200,398684159,US
398684160,398692351,NL
@@ -5179,11 +9377,37 @@
398851072,398852095,NL
398852096,398854143,US
398854144,398854399,NL
-398854400,398856191,US
+398854400,398854915,US
+398854916,398854919,HK
+398854920,398854923,US
+398854924,398854927,HK
+398854928,398854931,US
+398854932,398854935,HK
+398854936,398854939,US
+398854940,398854943,HK
+398854944,398854959,US
+398854960,398854963,HK
+398854964,398854967,US
+398854968,398854971,HK
+398854972,398854975,US
+398854976,398854979,HK
+398854980,398854983,US
+398854984,398854987,HK
+398854988,398854991,US
+398854992,398854995,HK
+398854996,398856191,US
398856192,398860287,NL
398860288,398868479,US
398868480,398877183,NL
-398877184,398970879,US
+398877184,398877561,US
+398877562,398877574,MY
+398877575,398877634,US
+398877635,398877644,MY
+398877645,398877645,US
+398877646,398877646,MY
+398877647,398877648,US
+398877649,398877671,MY
+398877672,398970879,US
398970880,398974975,NL
398974976,399004671,US
399004672,399006207,FR
@@ -5195,7 +9419,21 @@
399020032,399028223,NL
399028224,399032319,US
399032320,399036415,NL
-399036416,399056127,US
+399036416,399044291,US
+399044292,399044295,IN
+399044296,399044299,US
+399044300,399044303,IN
+399044304,399044307,US
+399044308,399044311,IN
+399044312,399044315,US
+399044316,399044319,IN
+399044320,399044323,US
+399044324,399044327,IN
+399044328,399044331,US
+399044332,399044335,IN
+399044336,399044339,US
+399044340,399044343,IN
+399044344,399056127,US
399056128,399056383,NL
399056384,399076351,US
399076352,399076863,NL
@@ -5213,19 +9451,177 @@
399175680,399179775,NL
399179776,399243519,US
399243520,399243775,NL
-399243776,399280895,US
+399243776,399271445,US
+399271446,399271447,AR
+399271448,399271451,US
+399271452,399271455,AR
+399271456,399271459,US
+399271460,399271463,AR
+399271464,399280895,US
399280896,399281151,NL
399281152,399331327,US
399331328,399335423,NL
-399335424,399342335,US
+399335424,399340323,US
+399340324,399340324,AU
+399340325,399340325,US
+399340326,399340327,AU
+399340328,399340358,US
+399340359,399340359,AU
+399340360,399340373,US
+399340374,399340375,AU
+399340376,399340379,US
+399340380,399340383,AU
+399340384,399340387,US
+399340388,399340391,AU
+399340392,399340396,US
+399340397,399340399,AU
+399340400,399340403,US
+399340404,399340407,AU
+399340408,399340411,US
+399340412,399340415,AU
+399340416,399340419,US
+399340420,399340423,AU
+399340424,399340547,US
+399340548,399340550,AU
+399340551,399340551,US
+399340552,399340556,AU
+399340557,399340643,US
+399340644,399340645,AU
+399340646,399340659,US
+399340660,399340662,AU
+399340663,399340666,US
+399340667,399340668,AU
+399340669,399340743,US
+399340744,399340748,AU
+399340749,399340749,US
+399340750,399340758,AU
+399340759,399340803,US
+399340804,399340807,AU
+399340808,399340811,US
+399340812,399340813,AU
+399340814,399340814,US
+399340815,399340815,AU
+399340816,399340819,US
+399340820,399340823,AU
+399340824,399340827,US
+399340828,399340831,AU
+399340832,399340835,US
+399340836,399340838,AU
+399340839,399341029,US
+399341030,399341033,AU
+399341034,399341037,US
+399341038,399341041,AU
+399341042,399341045,US
+399341046,399341048,AU
+399341049,399341127,US
+399341128,399341129,IN
+399341130,399341135,US
+399341136,399341137,IN
+399341138,399341143,US
+399341144,399341145,IN
+399341146,399341147,US
+399341148,399341169,IN
+399341170,399341247,US
+399341248,399341249,IN
+399341250,399341255,US
+399341256,399341257,IN
+399341258,399341263,US
+399341264,399341265,IN
+399341266,399341268,US
+399341269,399341270,IN
+399341271,399342335,US
399342336,399342591,NL
-399342592,399353855,US
-399353856,399354879,NL
+399342592,399343363,US
+399343364,399343367,BR
+399343368,399343371,US
+399343372,399343374,BR
+399343375,399343379,US
+399343380,399343383,BR
+399343384,399343387,US
+399343388,399343391,BR
+399343392,399343395,US
+399343396,399343399,BR
+399343400,399343403,US
+399343404,399343407,BR
+399343408,399343411,US
+399343412,399343414,BR
+399343415,399343419,US
+399343420,399343423,BR
+399343424,399343427,US
+399343428,399343431,BR
+399343432,399343435,US
+399343436,399343439,BR
+399343440,399343443,US
+399343444,399343447,BR
+399343448,399343451,US
+399343452,399343455,BR
+399343456,399343459,US
+399343460,399343463,BR
+399343464,399343467,US
+399343468,399343469,BR
+399343470,399343470,US
+399343471,399343471,BR
+399343472,399343475,US
+399343476,399343476,BR
+399343477,399353855,US
+399353856,399354371,NL
+399354372,399354388,GB
+399354389,399354389,NL
+399354390,399354392,GB
+399354393,399354393,NL
+399354394,399354403,GB
+399354404,399354404,NL
+399354405,399354406,GB
+399354407,399354407,NL
+399354408,399354408,GB
+399354409,399354444,NL
+399354445,399354448,GB
+399354449,399354452,NL
+399354453,399354456,GB
+399354457,399354460,NL
+399354461,399354464,GB
+399354465,399354468,NL
+399354469,399354472,GB
+399354473,399354476,NL
+399354477,399354480,GB
+399354481,399354484,NL
+399354485,399354488,GB
+399354489,399354492,NL
+399354493,399354493,GB
+399354494,399354494,NL
+399354495,399354496,GB
+399354497,399354500,NL
+399354501,399354504,GB
+399354505,399354508,NL
+399354509,399354512,GB
+399354513,399354516,NL
+399354517,399354520,GB
+399354521,399354524,NL
+399354525,399354528,GB
+399354529,399354532,NL
+399354533,399354536,GB
+399354537,399354540,NL
+399354541,399354544,GB
+399354545,399354548,NL
+399354549,399354552,GB
+399354553,399354556,NL
+399354557,399354560,GB
+399354561,399354564,NL
+399354565,399354566,GB
+399354567,399354879,NL
399354880,399355903,US
399355904,399359999,NL
399360000,399367167,US
399367168,399367679,NL
-399367680,399377407,US
+399367680,399367939,US
+399367940,399367943,IN
+399367944,399367947,US
+399367948,399367951,IN
+399367952,399367955,US
+399367956,399367956,IN
+399367957,399367957,US
+399367958,399367959,IN
+399367960,399377407,US
399377408,399378943,NL
399378944,399380479,US
399380480,399388671,NL
@@ -5233,54 +9629,548 @@
399396864,399406079,NL
399406080,399406591,US
399406592,399407103,NL
-399407104,399433727,US
+399407104,399426165,US
+399426166,399426167,AU
+399426168,399426171,US
+399426172,399426174,AU
+399426175,399426179,US
+399426180,399426183,AU
+399426184,399426187,US
+399426188,399426191,AU
+399426192,399426195,US
+399426196,399426199,AU
+399426200,399426203,US
+399426204,399426207,AU
+399426208,399426211,US
+399426212,399426215,AU
+399426216,399426219,US
+399426220,399426220,AU
+399426221,399426221,US
+399426222,399426223,AU
+399426224,399426227,US
+399426228,399426231,AU
+399426232,399426235,US
+399426236,399426239,AU
+399426240,399426243,US
+399426244,399426247,AU
+399426248,399426251,US
+399426252,399426255,AU
+399426256,399426259,US
+399426260,399426263,AU
+399426264,399426267,US
+399426268,399426269,AU
+399426270,399426275,US
+399426276,399426277,AU
+399426278,399426281,US
+399426282,399426285,AU
+399426286,399433727,US
399433728,399434751,NL
-399434752,399486975,US
+399434752,399438595,US
+399438596,399438599,AU
+399438600,399438603,US
+399438604,399438607,AU
+399438608,399438611,US
+399438612,399438615,AU
+399438616,399438619,US
+399438620,399438623,AU
+399438624,399438627,US
+399438628,399438631,AU
+399438632,399438635,US
+399438636,399438639,AU
+399438640,399438643,US
+399438644,399438647,AU
+399438648,399438651,US
+399438652,399438652,AU
+399438653,399438653,US
+399438654,399438655,AU
+399438656,399438659,US
+399438660,399438663,AU
+399438664,399486975,US
399486976,399491071,NL
399491072,399495167,US
399495168,399503359,NL
399503360,399526911,US
399526912,399527935,NL
-399527936,399590399,US
-399590400,399591935,NL
+399527936,399583316,US
+399583317,399583318,AU
+399583319,399583395,US
+399583396,399583399,AU
+399583400,399583403,US
+399583404,399583407,AU
+399583408,399583411,US
+399583412,399583415,AU
+399583416,399583427,US
+399583428,399583431,AU
+399583432,399583435,US
+399583436,399583439,AU
+399583440,399583443,US
+399583444,399583447,AU
+399583448,399583459,US
+399583460,399583463,AU
+399583464,399590399,US
+399590400,399591683,NL
+399591684,399591687,GB
+399591688,399591691,NL
+399591692,399591695,GB
+399591696,399591699,NL
+399591700,399591703,GB
+399591704,399591707,NL
+399591708,399591711,GB
+399591712,399591715,NL
+399591716,399591719,GB
+399591720,399591723,NL
+399591724,399591727,GB
+399591728,399591731,NL
+399591732,399591735,GB
+399591736,399591739,NL
+399591740,399591743,GB
+399591744,399591747,NL
+399591748,399591751,GB
+399591752,399591755,NL
+399591756,399591759,GB
+399591760,399591763,NL
+399591764,399591767,GB
+399591768,399591771,NL
+399591772,399591775,GB
+399591776,399591779,NL
+399591780,399591783,GB
+399591784,399591787,NL
+399591788,399591791,GB
+399591792,399591795,NL
+399591796,399591799,GB
+399591800,399591803,NL
+399591804,399591807,GB
+399591808,399591827,NL
+399591828,399591831,GB
+399591832,399591835,NL
+399591836,399591837,GB
+399591838,399591838,NL
+399591839,399591839,GB
+399591840,399591843,NL
+399591844,399591844,GB
+399591845,399591845,NL
+399591846,399591847,GB
+399591848,399591851,NL
+399591852,399591855,GB
+399591856,399591859,NL
+399591860,399591861,GB
+399591862,399591935,NL
399591936,399594495,US
399594496,399595519,NL
-399595520,399598591,US
+399595520,399596803,US
+399596804,399596804,JP
+399596805,399596805,US
+399596806,399596807,JP
+399596808,399596811,US
+399596812,399596815,JP
+399596816,399596819,US
+399596820,399596823,JP
+399596824,399596827,US
+399596828,399596831,JP
+399596832,399596835,US
+399596836,399596836,JP
+399596837,399598591,US
399598592,399599871,NL
-399599872,399644671,US
+399599872,399619085,US
+399619086,399619087,TH
+399619088,399619091,US
+399619092,399619095,TH
+399619096,399619099,US
+399619100,399619103,TH
+399619104,399619883,US
+399619884,399619902,AU
+399619903,399620035,US
+399620036,399620039,AU
+399620040,399620043,US
+399620044,399620045,AU
+399620046,399620051,US
+399620052,399620052,AU
+399620053,399640491,US
+399640492,399640495,AU
+399640496,399640499,US
+399640500,399640503,AU
+399640504,399640507,US
+399640508,399640511,AU
+399640512,399640515,US
+399640516,399640519,AU
+399640520,399640523,US
+399640524,399640527,AU
+399640528,399640531,US
+399640532,399640535,AU
+399640536,399640539,US
+399640540,399640543,AU
+399640544,399640547,US
+399640548,399640551,AU
+399640552,399644671,US
399644672,399646719,NL
399646720,399647743,US
-399647744,399649791,NL
-399649792,399688703,US
+399647744,399650815,NL
+399650816,399688703,US
399688704,399689727,NL
-399689728,399702015,US
+399689728,399690325,US
+399690326,399690327,JP
+399690328,399690331,US
+399690332,399690335,JP
+399690336,399690339,US
+399690340,399690343,JP
+399690344,399690347,US
+399690348,399690350,JP
+399690351,399690355,US
+399690356,399690359,JP
+399690360,399690363,US
+399690364,399690367,JP
+399690368,399690371,US
+399690372,399690372,JP
+399690373,399690373,US
+399690374,399690375,JP
+399690376,399690379,US
+399690380,399690383,JP
+399690384,399690387,US
+399690388,399690391,JP
+399690392,399690395,US
+399690396,399690399,JP
+399690400,399690403,US
+399690404,399690407,JP
+399690408,399690411,US
+399690412,399690412,JP
+399690413,399690413,US
+399690414,399690415,JP
+399690416,399690419,US
+399690420,399690423,JP
+399690424,399690427,US
+399690428,399690431,JP
+399690432,399690435,US
+399690436,399690439,JP
+399690440,399690443,US
+399690444,399690447,JP
+399690448,399690451,US
+399690452,399690453,JP
+399690454,399693571,US
+399693572,399693575,TW
+399693576,399693579,US
+399693580,399693583,TW
+399693584,399693587,US
+399693588,399693591,TW
+399693592,399693595,US
+399693596,399693599,TW
+399693600,399693603,US
+399693604,399693607,TW
+399693608,399693611,US
+399693612,399693613,TW
+399693614,399693669,US
+399693670,399693671,TW
+399693672,399693675,US
+399693676,399693679,TW
+399693680,399693683,US
+399693684,399693687,TW
+399693688,399693691,US
+399693692,399693695,TW
+399693696,399693699,US
+399693700,399693703,TW
+399693704,399693707,US
+399693708,399693711,TW
+399693712,399694339,US
+399694340,399694343,JP
+399694344,399694347,US
+399694348,399694351,JP
+399694352,399694355,US
+399694356,399694359,JP
+399694360,399694363,US
+399694364,399694367,JP
+399694368,399694371,US
+399694372,399694375,JP
+399694376,399694379,US
+399694380,399694383,JP
+399694384,399694387,US
+399694388,399694391,JP
+399694392,399694395,US
+399694396,399694399,JP
+399694400,399694403,US
+399694404,399694407,JP
+399694408,399694411,US
+399694412,399694415,JP
+399694416,399694419,US
+399694420,399694423,JP
+399694424,399694427,US
+399694428,399694431,JP
+399694432,399694435,US
+399694436,399694439,JP
+399694440,399694595,US
+399694596,399694599,JP
+399694600,399694603,US
+399694604,399694607,JP
+399694608,399694611,US
+399694612,399694615,JP
+399694616,399694619,US
+399694620,399694623,JP
+399694624,399694627,US
+399694628,399694631,JP
+399694632,399694635,US
+399694636,399694639,JP
+399694640,399694643,US
+399694644,399694647,JP
+399694648,399694651,US
+399694652,399694655,JP
+399694656,399694659,US
+399694660,399694663,JP
+399694664,399694667,US
+399694668,399694671,JP
+399694672,399694675,US
+399694676,399694676,JP
+399694677,399694677,US
+399694678,399694679,JP
+399694680,399694683,US
+399694684,399694687,JP
+399694688,399694691,US
+399694692,399694695,JP
+399694696,399694699,US
+399694700,399694701,JP
+399694702,399702015,US
399702016,399707135,NL
-399707136,399740927,US
+399707136,399734070,US
+399734071,399734071,KR
+399734072,399734075,US
+399734076,399734079,KR
+399734080,399734083,US
+399734084,399734086,KR
+399734087,399738683,US
+399738684,399738716,IN
+399738717,399738733,US
+399738734,399738734,IN
+399738735,399740927,US
399740928,399749119,NL
399749120,399769855,US
-399769856,399770111,NL
-399770112,399782911,US
+399769856,399769859,NL
+399769860,399769863,GB
+399769864,399769867,NL
+399769868,399769871,GB
+399769872,399769875,NL
+399769876,399769879,GB
+399769880,399769883,NL
+399769884,399769887,GB
+399769888,399769891,NL
+399769892,399769895,GB
+399769896,399769899,NL
+399769900,399769903,GB
+399769904,399769907,NL
+399769908,399769911,GB
+399769912,399769915,NL
+399769916,399769918,GB
+399769919,399770111,NL
+399770112,399770955,US
+399770956,399770959,MX
+399770960,399770963,US
+399770964,399770967,MX
+399770968,399770971,US
+399770972,399770975,MX
+399770976,399782147,US
+399782148,399782151,AR
+399782152,399782155,US
+399782156,399782159,AR
+399782160,399782463,US
+399782464,399782467,IN
+399782468,399782471,US
+399782472,399782474,IN
+399782475,399782502,US
+399782503,399782506,IN
+399782507,399782510,US
+399782511,399782514,IN
+399782515,399782518,US
+399782519,399782522,IN
+399782523,399782526,US
+399782527,399782530,IN
+399782531,399782534,US
+399782535,399782538,IN
+399782539,399782542,US
+399782543,399782546,IN
+399782547,399782550,US
+399782551,399782554,IN
+399782555,399782911,US
399782912,399783167,NL
-399783168,399797247,US
-399797248,399797759,NL
-399797760,399827967,US
-399827968,399830015,NL
+399783168,399783492,US
+399783493,399783495,JP
+399783496,399783499,US
+399783500,399783503,JP
+399783504,399783507,US
+399783508,399783511,JP
+399783512,399783515,US
+399783516,399783519,JP
+399783520,399783523,US
+399783524,399783527,JP
+399783528,399783531,US
+399783532,399783535,JP
+399783536,399783539,US
+399783540,399783543,JP
+399783544,399783547,US
+399783548,399783548,JP
+399783549,399783549,US
+399783550,399783551,JP
+399783552,399783555,US
+399783556,399783559,JP
+399783560,399783563,US
+399783564,399783567,JP
+399783568,399783571,US
+399783572,399783575,JP
+399783576,399783579,US
+399783580,399783583,JP
+399783584,399783587,US
+399783588,399783591,JP
+399783592,399783595,US
+399783596,399783599,JP
+399783600,399783603,US
+399783604,399783607,JP
+399783608,399783611,US
+399783612,399783615,JP
+399783616,399783619,US
+399783620,399783620,JP
+399783621,399797247,US
+399797248,399797251,NL
+399797252,399797278,GB
+399797279,399797288,NL
+399797289,399797289,GB
+399797290,399797290,NL
+399797291,399797325,GB
+399797326,399797329,NL
+399797330,399797332,GB
+399797333,399797759,NL
+399797760,399826943,US
+399826944,399830015,NL
399830016,399849471,US
399849472,399850495,NL
-399850496,399918079,US
+399850496,399867905,US
+399867906,399867909,AU
+399867910,399867913,US
+399867914,399867917,AU
+399867918,399867921,US
+399867922,399867925,AU
+399867926,399867929,US
+399867930,399867933,AU
+399867934,399867937,US
+399867938,399867941,AU
+399867942,399867945,US
+399867946,399867949,AU
+399867950,399867953,US
+399867954,399867957,AU
+399867958,399867961,US
+399867962,399867963,AU
+399867964,399882673,US
+399882674,399882677,MY
+399882678,399882681,US
+399882682,399882685,MY
+399882686,399882689,US
+399882690,399882693,MY
+399882694,399918079,US
399918080,399919615,NL
399919616,399930367,US
-399930368,399951359,NL
-399951360,399951871,US
-399951872,399952895,NL
+399930368,399951107,NL
+399951108,399951111,DE
+399951112,399951115,NL
+399951116,399951119,DE
+399951120,399951123,NL
+399951124,399951127,DE
+399951128,399951131,NL
+399951132,399951135,DE
+399951136,399951139,NL
+399951140,399951143,DE
+399951144,399951147,NL
+399951148,399951151,DE
+399951152,399951155,NL
+399951156,399951159,DE
+399951160,399951163,NL
+399951164,399951167,DE
+399951168,399951171,NL
+399951172,399951175,DE
+399951176,399951179,NL
+399951180,399951183,DE
+399951184,399951187,NL
+399951188,399951191,DE
+399951192,399951195,NL
+399951196,399951199,DE
+399951200,399951203,NL
+399951204,399951207,DE
+399951208,399951211,NL
+399951212,399951215,DE
+399951216,399951219,NL
+399951220,399951221,DE
+399951222,399951235,NL
+399951236,399951239,DE
+399951240,399951243,NL
+399951244,399951247,DE
+399951248,399951251,NL
+399951252,399951255,DE
+399951256,399951359,NL
+399951360,399951615,US
+399951616,399952895,NL
399952896,399953919,US
399953920,399958015,NL
-399958016,399968255,US
-399968256,399970303,MX
+399958016,399968511,US
+399968512,399968767,NL
+399968768,399969279,US
+399969280,399969535,NL
+399969536,399969791,US
+399969792,399970051,MX
+399970052,399970088,US
+399970089,399970089,MX
+399970090,399970126,US
+399970127,399970127,MX
+399970128,399970131,US
+399970132,399970132,MX
+399970133,399970134,US
+399970135,399970136,MX
+399970137,399970155,US
+399970156,399970156,MX
+399970157,399970164,US
+399970165,399970303,MX
399970304,399980031,NL
399980032,399981567,US
399981568,399982079,NL
-399982080,400056319,US
+399982080,399998975,US
+399998976,399999283,NL
+399999284,399999287,DE
+399999288,399999291,NL
+399999292,399999292,DE
+399999293,399999293,NL
+399999294,399999295,DE
+399999296,399999299,NL
+399999300,399999303,DE
+399999304,399999307,NL
+399999308,399999311,DE
+399999312,399999315,NL
+399999316,399999319,DE
+399999320,399999363,NL
+399999364,399999367,DE
+399999368,399999371,NL
+399999372,399999375,DE
+399999376,399999379,NL
+399999380,399999383,DE
+399999384,399999388,NL
+399999389,399999391,DE
+399999392,399999395,NL
+399999396,399999396,DE
+399999397,399999487,NL
+399999488,400021443,US
+400021444,400021447,IN
+400021448,400021451,US
+400021452,400021453,IN
+400021454,400021459,US
+400021460,400021461,IN
+400021462,400021462,US
+400021463,400021463,IN
+400021464,400021469,US
+400021470,400021471,IN
+400021472,400021475,US
+400021476,400021479,IN
+400021480,400021483,US
+400021484,400021485,IN
+400021486,400045571,US
+400045572,400045575,NZ
+400045576,400045579,US
+400045580,400045583,NZ
+400045584,400045587,US
+400045588,400045591,NZ
+400045592,400045595,US
+400045596,400045599,NZ
+400045600,400056319,US
400056320,400064511,NL
400064512,400083455,US
400083456,400084991,NL
@@ -5288,7 +10178,21 @@
400093184,400097279,NL
400097280,400098303,US
400098304,400100351,NL
-400100352,400111103,US
+400100352,400110895,US
+400110896,400110896,IN
+400110897,400110897,US
+400110898,400110899,IN
+400110900,400110903,US
+400110904,400110905,IN
+400110906,400110906,US
+400110907,400110907,IN
+400110908,400110911,US
+400110912,400110915,IN
+400110916,400110919,US
+400110920,400110920,IN
+400110921,400110921,US
+400110922,400110922,IN
+400110923,400111103,US
400111104,400111615,NL
400111616,400112639,US
400112640,400113663,NL
@@ -5302,7 +10206,9 @@
400131584,400132095,NL
400132096,400144383,US
400144384,400145407,NL
-400145408,400150527,US
+400145408,400149503,US
+400149504,400150015,NL
+400150016,400150527,US
400150528,400162815,NL
400162816,400186367,US
400186368,400187391,NL
@@ -5310,17 +10216,73 @@
400201216,400202751,NL
400202752,400203775,US
400203776,400211967,NL
-400211968,400250367,US
+400211968,400238467,US
+400238468,400238471,JP
+400238472,400238475,US
+400238476,400238479,JP
+400238480,400238483,US
+400238484,400238487,JP
+400238488,400238491,US
+400238492,400238495,JP
+400238496,400238499,US
+400238500,400238503,JP
+400238504,400250367,US
400250368,400250879,NL
400250880,400251647,US
-400251648,400251903,NL
+400251648,400251739,NL
+400251740,400251740,CZ
+400251741,400251741,NL
+400251742,400251743,CZ
+400251744,400251747,NL
+400251748,400251751,CZ
+400251752,400251755,NL
+400251756,400251759,CZ
+400251760,400251763,NL
+400251764,400251767,CZ
+400251768,400251771,NL
+400251772,400251775,CZ
+400251776,400251779,NL
+400251780,400251783,CZ
+400251784,400251787,NL
+400251788,400251791,CZ
+400251792,400251795,NL
+400251796,400251799,CZ
+400251800,400251803,NL
+400251804,400251807,CZ
+400251808,400251903,NL
400251904,400261631,US
-400261632,400261887,NL
+400261632,400261635,NL
+400261636,400261639,DE
+400261640,400261643,NL
+400261644,400261647,DE
+400261648,400261651,NL
+400261652,400261655,DE
+400261656,400261659,NL
+400261660,400261663,DE
+400261664,400261667,NL
+400261668,400261671,DE
+400261672,400261675,NL
+400261676,400261679,DE
+400261680,400261683,NL
+400261684,400261687,DE
+400261688,400261691,NL
+400261692,400261695,DE
+400261696,400261887,NL
400261888,400263167,US
400263168,400263679,NL
400263680,400264703,US
400264704,400265215,NL
-400265216,400275711,US
+400265216,400275499,US
+400275500,400275503,ID
+400275504,400275507,US
+400275508,400275511,ID
+400275512,400275515,US
+400275516,400275519,ID
+400275520,400275523,US
+400275524,400275527,ID
+400275528,400275531,US
+400275532,400275535,ID
+400275536,400275711,US
400275712,400275967,NL
400275968,400400383,US
400400384,400410111,NL
@@ -6020,23 +10982,17 @@
401434496,401435135,CA
401435136,401547263,US
401547264,401555455,CA
-401555456,401571842,US
-401571843,401571848,GB
-401571849,401571869,US
-401571870,401571875,GB
-401571876,401571882,US
-401571883,401571888,GB
-401571889,401571889,US
-401571890,401572095,GB
-401572096,401573238,US
-401573239,401573264,GB
-401573265,401573290,US
-401573291,401573361,GB
-401573362,401573887,US
+401555456,401571839,US
+401571840,401572095,GB
+401572096,401572607,US
+401572608,401572863,GB
+401572864,401573119,US
+401573120,401573375,GB
+401573376,401573887,US
401573888,401574911,GB
-401574912,401575679,US
-401575680,401575935,GB
-401575936,401576703,US
+401574912,401575167,US
+401575168,401576191,GB
+401576192,401576703,US
401576704,401577471,GB
401577472,401577983,US
401577984,401579263,GB
@@ -6120,15 +11076,15 @@
402176512,402177023,NL
402177024,402177535,US
402177536,402178047,JP
-402178048,402223103,US
+402178048,402198527,US
+402198528,402202623,JP
+402202624,402223103,US
402223104,402227199,CA
402227200,402227455,US
-402227456,402227711,PR
-402227712,402228223,US
-402228224,402229247,PR
+402227456,402229247,PR
402229248,402229759,US
-402229760,402230783,PR
-402230784,402239301,US
+402229760,402230527,PR
+402230528,402239301,US
402239302,402239302,CA
402239303,402239473,US
402239474,402239474,CA
@@ -6153,7 +11109,9 @@
402260296,402260303,US
402260304,402260367,CA
402260368,402260383,US
-402260384,402260431,CA
+402260384,402260415,CA
+402260416,402260423,US
+402260424,402260431,CA
402260432,402260439,US
402260440,402260479,CA
402260480,402260511,US
@@ -6552,7 +11510,9 @@
402409471,402409471,TR
402409472,402410495,US
402410496,402410751,TR
-402410752,402455295,US
+402410752,402448383,US
+402448384,402452479,CA
+402452480,402455295,US
402455296,402455551,DE
402455552,402522111,US
402522112,402522175,CA
@@ -6812,14 +11772,10 @@
405368832,405372927,JP
405372928,405373695,US
405373696,405377023,PR
-405377024,405379071,US
-405379072,405380095,PR
-405380096,405380351,US
-405380352,405381887,PR
+405377024,405378047,US
+405378048,405381887,PR
405381888,405382143,US
-405382144,405383295,PR
-405383296,405383423,US
-405383424,405389311,PR
+405382144,405389311,PR
405389312,405389823,US
405389824,405422079,PR
405422080,405798911,US
@@ -6833,9 +11789,7 @@
405938176,405962751,CA
405962752,405970943,US
405970944,405979135,CA
-405979136,405980159,PR
-405980160,405980671,US
-405980672,405995519,PR
+405979136,405995519,PR
405995520,406011903,US
406011904,406028287,BS
406028288,406052863,US
@@ -6890,9 +11844,7 @@
411303936,411369471,NL
411369472,411435007,TR
411435008,411500543,DE
-411500544,411509247,RS
-411509248,411509759,XK
-411509760,411566079,RS
+411500544,411566079,RS
411566080,411639807,US
411639808,411664383,CA
411664384,411680767,US
@@ -6931,9 +11883,7 @@
413925376,415760383,US
415760384,416022527,CA
416022528,416059391,US
-416059392,416065535,CA
-416065536,416067583,US
-416067584,416088063,CA
+416059392,416088063,CA
416088064,416153599,US
416153600,416161791,BS
416161792,416219135,US
@@ -7121,7 +12071,8 @@
460158976,460159999,JP
460160000,460161023,CN
460161024,460193791,MO
-460193792,460210175,JP
+460193792,460198911,GB
+460198912,460210175,JP
460210176,460214271,HK
460214272,460218367,MY
460218368,460224511,JP
@@ -7212,13 +12163,10 @@
461050368,461050879,TH
461050880,461051903,NZ
461051904,461054975,AU
-461054976,461055999,HK
-461056000,461058047,AU
-461058048,461062143,HK
+461054976,461062143,HK
461062144,461078527,IN
461078528,461094911,FJ
-461094912,461096959,HK
-461096960,461099007,TW
+461094912,461099007,HK
461099008,461100031,JP
461100032,461101055,MN
461101056,461102079,IN
@@ -7415,7 +12363,9 @@
520781824,520822783,CH
520822784,520824831,IT
520824832,520826879,US
-520826880,520828927,QA
+520826880,520827007,QA
+520827008,520827071,IT
+520827072,520828927,QA
520828928,520830975,NL
520830976,520847359,MK
520847360,520880127,PL
@@ -7614,7 +12564,7 @@
521777152,521779199,ES
521779200,521783295,GB
521783296,521785343,RU
-521785344,521787391,GB
+521785344,521787391,ES
521787392,521789439,NO
521789440,521791487,RU
521791488,521793535,IR
@@ -7670,9 +12620,7 @@
522767360,522768383,TR
522768384,522768895,US
522768896,522769407,CN
-522769408,522769919,DE
-522769920,522770175,US
-522770176,522770431,DE
+522769408,522770431,US
522770432,522771455,NL
522771456,522772479,TR
522772480,522773503,US
@@ -7845,7 +12793,8 @@
528812032,528814079,CZ
528814080,528816127,PL
528816128,528818175,RO
-528818176,528835583,UA
+528818176,528822271,RU
+528822272,528835583,UA
528835584,528836607,IL
528836608,528838655,RU
528838656,528840703,PL
@@ -7921,7 +12870,7 @@
529844736,529845759,RU
529845760,529846271,UA
529846272,529847295,UZ
-529847296,529848319,GB
+529847296,529848319,CZ
529848320,529848575,NL
529848576,529848831,CZ
529848832,529849087,UA
@@ -8000,12 +12949,12 @@
531357696,531361791,HU
531361792,531365887,CH
531367936,531369983,DE
+531369984,531371007,CH
531372032,531372287,DE
531372544,531372799,DE
531373056,531374079,DE
531376128,531377151,DE
-531382272,531390463,DE
-531392512,531398655,DE
+531382272,531398655,DE
531398656,531400703,RU
531400704,531402751,UA
531402752,531404799,LU
@@ -8030,7 +12979,11 @@
531425880,531425951,GB
531425952,531425983,FR
531425984,531426015,GB
-531426016,531427023,FR
+531426016,531426031,FR
+531426032,531426047,GB
+531426048,531426751,FR
+531426752,531426791,GB
+531426792,531427023,FR
531427024,531427039,GB
531427040,531427047,FR
531427048,531427071,GB
@@ -8110,9 +13063,7 @@
532310016,532310023,GR
532310024,532310031,BG
532310032,532312063,GR
-532312064,532312983,JE
-532312984,532312991,GB
-532312992,532314111,JE
+532312064,532314111,JE
532314112,532316159,DE
532316160,532324351,RU
532324352,532328447,NL
@@ -8327,9 +13278,7 @@
534158592,534158847,NL
534158848,534161407,DE
534161408,534163455,IR
-534163456,534166527,ES
-534166528,534166783,DE
-534166784,534167551,ES
+534163456,534167551,ES
534167552,534169599,DE
534169600,534170111,IR
534170112,534176767,DE
@@ -8391,14 +13340,16 @@
534515712,534515967,GB
534515968,534516735,US
534516736,534516991,GB
-534516992,534517759,US
+534516992,534517503,US
+534517504,534517759,GB
534517760,534518783,NL
534518784,534518847,ES
534518848,534518911,FI
534518912,534518975,FR
534518976,534519039,AU
534519040,534519167,AL
-534519168,534519199,GB
+534519168,534519198,GB
+534519199,534519199,AL
534519200,534519231,VA
534519232,534519263,AL
534519264,534519295,IT
@@ -8460,7 +13411,10 @@
538451851,539471492,US
539471493,539471493,SG
539471494,539623423,US
-539623424,539626751,NL
+539623424,539624577,GB
+539624578,539624578,NL
+539624579,539625471,GB
+539625472,539626751,NL
539626752,539627007,GB
539627008,539627519,NL
539627520,539629455,GB
@@ -8493,7 +13447,9 @@
540729344,540731391,US
540731392,540733439,GB
540733440,540737535,NL
-540737536,540803071,BR
+540737536,540745727,BR
+540745728,540749823,MX
+540749824,540803071,BR
540803072,540811263,US
540811264,540813639,SG
540813640,540813647,US
@@ -8510,9 +13466,7 @@
540825348,540825348,CA
540825349,540826383,US
540826384,540826399,CA
-540826400,540829183,US
-540829184,540829439,CA
-540829440,540829695,US
+540826400,540829695,US
540829696,540833791,CA
540833792,543524607,US
543524608,543524863,CA
@@ -8798,8 +13752,8 @@
621350912,621355007,KZ
621355008,621356031,LU
621356032,621358079,RU
-621358080,621359103,US
-621359104,621361151,RU
+621358080,621358591,US
+621358592,621361151,RU
621361152,621363199,GB
621363200,621381631,RU
621381632,621383679,FR
@@ -8828,14 +13782,13 @@
621417472,621417727,DE
621417728,621418495,NL
621418496,621419007,US
-621419008,621419263,CN
-621419264,621419519,SG
-621419520,621421055,NL
-621421056,621421567,US
+621419008,621421311,NL
+621421312,621421567,US
621421568,621422591,NL
621422592,621422847,HK
621422848,621423103,SG
-621423104,621423615,US
+621423104,621423359,NL
+621423360,621423615,US
621423616,621428735,NL
621428736,621429759,IR
621429760,621430271,DE
@@ -8879,8 +13832,13 @@
621938688,621939458,GE
621939459,621939459,RU
621939460,621939711,GE
-621939712,621953023,RU
-621953024,621955071,NL
+621939712,621947391,RU
+621947392,621947647,NL
+621947648,621948927,RU
+621948928,621950975,NO
+621950976,621951743,NL
+621951744,621953023,RU
+621953024,621955071,NO
621955072,621969407,RU
621969408,621970431,GB
621970432,621971455,ES
@@ -8924,15 +13882,12 @@
622428160,622430207,DE
622430208,622432255,IE
622432256,622434303,IT
-622434304,622436351,DE
-622436352,622438399,IE
-622438400,622439423,IT
+622434304,622435327,GB
+622435328,622436351,DE
+622436352,622439423,GB
622439424,622444543,DE
622444544,622448639,IE
-622448640,622449663,GB
-622449664,622450687,ES
-622450688,622451711,GB
-622451712,622452735,DE
+622448640,622452735,GB
622452736,622454783,IT
622454784,622456831,DE
622456832,622458879,IT
@@ -8957,7 +13912,9 @@
622514176,622518271,NO
622518272,622518783,GB
622518784,622519039,DE
-622519040,622519295,GB
+622519040,622519281,NL
+622519282,622519282,GB
+622519283,622519295,NL
622519296,622519551,FR
622519552,622520319,NL
622520320,622522367,RU
@@ -9024,9 +13981,7 @@
623097739,623116287,ES
623116288,623191332,KW
623191333,623191333,SA
-623191334,623339519,KW
-623339520,623339775,IT
-623339776,623378431,KW
+623191334,623378431,KW
623378432,623509503,OM
623509504,623575807,SA
623575808,623576063,RO
@@ -9042,9 +13997,10 @@
623673344,623689727,NO
623689728,623690751,RU
623690752,623691263,PL
-623691264,623693823,RU
+623691264,623692799,RU
+623692800,623693823,SE
623693824,623694847,CZ
-623694848,623695871,LT
+623694848,623695871,US
623695872,623696895,JP
623696896,623697919,AT
623697920,623698943,MC
@@ -9068,6 +14024,8 @@
623790080,623792127,ES
623792128,623794175,CZ
623794176,623796223,ES
+623796224,623797247,KZ
+623797248,623798271,DE
623798272,623800319,GE
623800320,623800575,NL
623800576,623800831,LU
@@ -9087,9 +14045,7 @@
623822592,623822847,DE
623822848,623824895,GB
623824896,623826943,CZ
-623826944,623827967,UA
-623827968,623828991,BG
-623828992,623837183,UA
+623826944,623837183,UA
623837184,623902719,PL
623902720,623919103,CZ
623919104,623935487,NL
@@ -9155,9 +14111,7 @@
624641376,624641407,LT
624641408,624641535,FR
624641536,624641551,IE
-624641552,624641855,FR
-624641856,624641887,GB
-624641888,624642019,FR
+624641552,624642019,FR
624642020,624642023,PL
624642024,624642035,FR
624642036,624642039,ES
@@ -9376,9 +14330,7 @@
624663504,624663519,ES
624663520,624663567,FR
624663568,624663583,ES
-624663584,624663591,FR
-624663592,624663595,NL
-624663596,624663759,FR
+624663584,624663759,FR
624663760,624663767,ES
624663768,624663787,FR
624663788,624663791,ES
@@ -9392,7 +14344,8 @@
624664068,624664071,ES
624664072,624664107,FR
624664108,624664111,PL
-624664112,624664351,FR
+624664112,624664115,FI
+624664116,624664351,FR
624664352,624664367,ES
624664368,624664527,FR
624664528,624664531,ES
@@ -9510,13 +14463,14 @@
624670936,624670939,GB
624670940,624670959,FR
624670960,624670975,PL
-624670976,624671287,FR
+624670976,624671275,FR
+624671276,624671279,CZ
+624671280,624671287,FR
624671288,624671291,ES
624671292,624671295,PL
624671296,624671455,FR
624671456,624671471,ES
-624671472,624671775,FR
-624671776,624671807,DE
+624671472,624671807,FR
624671808,624671823,PL
624671824,624671839,FR
624671840,624671871,DE
@@ -9596,7 +14550,9 @@
624676628,624676631,GB
624676632,624676715,FR
624676716,624676719,ES
-624676720,624677403,FR
+624676720,624676799,FR
+624676800,624676863,LT
+624676864,624677403,FR
624677404,624677407,DE
624677408,624677463,FR
624677464,624677467,ES
@@ -9931,7 +14887,8 @@
625827840,625829887,IT
625829888,625831935,RU
625831936,625836031,IT
-625836032,625838079,RU
+625836032,625836287,KZ
+625836288,625838079,RU
625838080,625840127,IT
625840128,625842175,RU
625842176,625844223,PL
@@ -10017,7 +14974,9 @@
628659200,628659455,ES
628659456,628659711,NO
628659712,628659967,US
-628659968,628660223,SG
+628659968,628660119,SG
+628660120,628660127,BN
+628660128,628660223,SG
628660224,628660479,BG
628660480,628660735,SE
628660736,628660991,JP
@@ -10039,7 +14998,8 @@
628793344,628801535,ME
628801536,628803583,GB
628803584,628805631,FR
-628805632,628807679,GB
+628805632,628806655,GB
+628806656,628807679,DE
628807680,628808703,ES
628808704,628809727,AT
628809728,628813823,TR
@@ -10126,7 +15086,8 @@
629891072,629895167,UA
629895168,629897215,AL
629897216,629899263,ES
-629899264,629900031,DE
+629899264,629899519,US
+629899520,629900031,DE
629900032,629900287,US
629901312,629903359,NL
629903360,629905407,PL
@@ -10207,7 +15168,8 @@
630720512,630722559,NL
630722560,630726655,PL
630726656,630732799,GB
-630732800,630734847,SE
+630732800,630734079,SE
+630734080,630734847,US
630734848,630736895,IS
630736896,630738943,TR
630738944,630743039,ES
@@ -10473,7 +15435,9 @@
635097088,635101183,PS
635101184,635103231,AE
635103232,635105279,HU
-635105280,635106815,NL
+635105280,635105535,NL
+635105536,635105791,US
+635105792,635106815,NL
635107072,635107327,NL
635107328,635109375,DE
635109376,635174911,FI
@@ -10601,20 +15565,14 @@
635878656,635878911,US
635878912,635879167,FI
635879168,635879423,US
-635879424,635882495,RU
-635882496,635882751,GE
-635882752,635894527,RU
+635879424,635884543,RU
+635884544,635885055,NL
+635885056,635894527,RU
635894528,635894783,KZ
635894784,635895807,RU
-635895808,635922943,KW
-635922944,635923199,IT
-635923200,635938815,KW
-635938816,635938943,IT
-635938944,635942655,KW
+635895808,635942655,KW
635942656,635942911,IT
-635942912,635952639,KW
-635952640,635952895,IT
-635952896,635961343,KW
+635942912,635961343,KW
635961344,635994111,GE
635994112,636026879,RU
636026880,636043263,MD
@@ -10668,15 +15626,11 @@
636952576,636956671,NL
636956672,636958719,IT
636958720,636960767,PL
-636960768,636965631,DE
-636965632,636965887,BE
-636965888,636966399,DE
-636966400,636966911,IT
+636960768,636965887,DE
+636965888,636966911,IT
636966912,636967167,DE
636967168,636967935,FR
-636967936,636968319,DE
-636968320,636968447,ES
-636968448,636968455,DE
+636967936,636968455,DE
636968456,636968456,BE
636968457,636968697,DE
636968698,636968698,CH
@@ -10686,9 +15640,9 @@
636974592,636975103,TR
636975104,636977151,ES
636977152,637140991,PL
-637140992,637164799,SE
-637164800,637165055,DK
-637165056,637174271,SE
+637140992,637156863,SE
+637156864,637157375,DK
+637157376,637174271,SE
637174272,637174783,DK
637174784,637206527,SE
637206528,637239295,NL
@@ -10784,28 +15738,28 @@
639446272,639467519,US
639467520,639471615,CA
639471616,639510527,US
-639510528,639512575,CA
-639512576,639632391,US
+639510528,639511551,CA
+639511552,639632391,US
639632392,639632399,MX
639632400,640106495,US
640106496,640114687,CA
640114688,641738239,US
641738240,641738495,CA
-641738496,641761279,US
-641761280,641761791,CA
+641738496,641761535,US
+641761536,641761791,CA
641761792,641764863,US
-641764864,641765887,CA
-641765888,641766399,US
-641766400,641767423,CA
+641764864,641767423,CA
641767424,641769471,US
641769472,641769983,CA
641769984,641770495,US
-641770496,641772543,CA
+641770496,641771775,CA
+641771776,641772031,US
+641772032,641772543,CA
641772544,641773055,US
641773056,641774641,CA
641774642,641774642,US
-641774643,641777919,CA
-641777920,641779199,US
+641774643,641778175,CA
+641778176,641779199,US
641779200,641779327,CA
641779328,641779711,US
641779712,641780735,CA
@@ -10818,15 +15772,13 @@
641794048,641826815,US
641826816,641827327,MX
641827328,641828351,US
-641828352,641829887,MX
-641829888,641830143,US
-641830144,641830399,MX
+641828352,641830399,MX
641830400,641830911,US
641830912,641839103,MX
-641839104,642089215,US
-642089216,642089727,CA
-642089728,642092287,US
-642092288,642092543,CA
+641839104,642088959,US
+642088960,642089471,CA
+642089472,642092031,US
+642092032,642092543,CA
642092544,642096127,US
642096128,642096639,CA
642096640,642101247,US
@@ -10837,17 +15789,13 @@
642113536,642115583,AU
642115584,642385919,US
642385920,642392063,CA
-642392064,642396159,US
-642396160,642400255,CA
-642400256,642793471,US
+642392064,642793471,US
642793472,642794495,CA
642794496,642806015,US
642806016,642806271,CA
642806272,643055103,US
643055104,643055615,CA
-643055616,643075071,US
-643075072,643075583,AU
-643075584,643211263,US
+643055616,643211263,US
643211264,643212287,GP
643212288,643216639,US
643216640,643216895,GD
@@ -10871,9 +15819,7 @@
643302912,643303423,CA
643303424,643317759,US
643317760,643319807,CA
-643319808,643325951,US
-643325952,643330047,CA
-643330048,643346431,US
+643319808,643346431,US
643346432,643346943,CA
643346944,643362815,US
643362816,643363327,CA
@@ -10913,15 +15859,7 @@
644247552,644249599,CA
644249600,644250623,US
644250624,644251647,CA
-644251648,644268031,US
-644268032,644268569,CA
-644268570,644268570,US
-644268571,644268613,CA
-644268614,644268614,US
-644268615,644268891,CA
-644268892,644268895,US
-644268896,644270079,CA
-644270080,644323327,US
+644251648,644323327,US
644323328,644325375,CA
644325376,644388863,US
644388864,644390911,CA
@@ -10946,9 +15884,7 @@
644582400,644583167,CA
644583168,644628735,US
644628736,644628991,CA
-644628992,644629759,US
-644629760,644630015,CA
-644630016,644630271,US
+644628992,644630271,US
644630272,644630527,CA
644630528,644633087,US
644633088,644633599,CA
@@ -10962,20 +15898,22 @@
644719360,644719615,CA
644719616,644720127,US
644720128,644720639,CA
-644720640,644759551,US
+644720640,644727807,US
+644727808,644728831,CA
+644728832,644759551,US
644759552,644760063,CA
644760064,644760575,US
644760576,644761599,CA
-644761600,644764671,US
-644764672,644772351,CA
-644772352,644772863,US
+644761600,644763135,US
+644763136,644763647,CA
+644763648,644764671,US
+644764672,644771839,CA
+644771840,644772863,US
644772864,644773375,CA
644773376,644773887,US
644773888,644775935,CA
644775936,644833279,US
-644833280,644834815,CA
-644834816,644835071,US
-644835072,644835327,CA
+644833280,644835327,CA
644835328,644836351,US
644836352,644837375,CA
644837376,644837887,US
@@ -10988,45 +15926,43 @@
644845842,644845855,RU
644845856,644845863,US
644845864,644846079,RU
-644846080,644876287,US
-644876288,644877823,CA
-644877824,644896767,US
-644896768,644900863,CA
-644900864,644903423,US
+644846080,644875007,US
+644875008,644875263,CA
+644875264,644896767,US
+644896768,644902911,CA
+644902912,644903423,US
644903424,644903935,CA
-644903936,644904959,US
-644904960,644907007,CA
-644907008,644982527,US
+644903936,644982271,US
+644982272,644982399,CA
+644982400,644982527,US
644982528,644984831,CA
644984832,644986111,US
644986112,644986367,CA
-644986368,644986879,US
-644986880,644987647,CA
-644987648,645185535,US
+644986368,644987135,US
+644987136,644987903,CA
+644987904,645185535,US
645185536,645185791,CA
-645185792,645187071,US
-645187072,645187583,CA
-645187584,645221375,US
-645221376,645223423,CA
+645185792,645186559,US
+645186560,645187583,CA
+645187584,645220863,US
+645220864,645223423,CA
645223424,645225471,US
645225472,645225983,CA
-645225984,645226239,US
-645226240,645226495,CA
-645226496,645227519,US
+645225984,645227519,US
645227520,645228287,CA
645228288,645228543,US
-645228544,645229567,CA
-645229568,645233663,US
+645228544,645229055,CA
+645229056,645230591,US
+645230592,645231615,CA
+645231616,645233663,US
645233664,645233919,CA
645233920,645234431,US
645234432,645234687,CA
-645234688,645480447,US
-645480448,645482495,CA
-645482496,645483775,US
+645234688,645481405,US
+645481406,645481406,CA
+645481407,645483775,US
645483776,645484031,CA
-645484032,645484543,US
-645484544,645488639,CA
-645488640,645525503,US
+645484032,645525503,US
645525504,645529599,CA
645529600,645539839,US
645539840,645540351,MX
@@ -11035,9 +15971,7 @@
645547008,645548031,CA
645548032,645554175,US
645554176,645556223,CA
-645556224,645561343,US
-645561344,645561855,MX
-645561856,645576703,US
+645556224,645576703,US
645576704,645576997,CA
645576998,645576998,US
645576999,645577215,CA
@@ -11061,9 +15995,7 @@
645873664,645875711,CA
645875712,645980159,US
645980160,645982207,CA
-645982208,645982719,US
-645982720,645983231,CA
-645983232,645984255,US
+645982208,645984255,US
645984256,645988351,CA
645988352,645989450,US
645989451,645989451,CA
@@ -11077,15 +16009,15 @@
646122496,646123519,PA
646123520,646160383,US
646160384,646164479,CA
-646164480,646165503,US
-646165504,646168575,CA
+646164480,646166527,US
+646166528,646168575,CA
646168576,646194612,US
646194613,646194613,CA
646194614,646194687,US
646194688,646194943,CA
-646194944,646195199,US
-646195200,646197247,CA
-646197248,646198032,US
+646194944,646195560,US
+646195561,646195561,CA
+646195562,646198032,US
646198033,646198033,CA
646198034,646198042,US
646198043,646198043,CA
@@ -11097,9 +16029,7 @@
646254592,646258687,CA
646258688,646262783,US
646262784,646264831,CA
-646264832,646409215,US
-646409216,646410239,GB
-646410240,646711807,US
+646264832,646711807,US
646711808,646712319,CA
646712320,646721023,US
646721024,646721535,CA
@@ -11115,7 +16045,11 @@
646852608,646853631,CA
646853632,646855679,US
646855680,646856703,CA
-646856704,647036927,US
+646856704,646908927,US
+646908928,646909439,BR
+646909440,646918143,US
+646918144,646922239,CA
+646922240,647036927,US
647036928,647045119,CA
647045120,647069695,US
647069696,647073791,CA
@@ -11142,26 +16076,25 @@
675381248,675397631,SG
675397632,675416063,US
675416064,675416575,AU
-675416576,675417599,US
-675417600,675418111,AU
+675416576,675417087,US
+675417088,675417599,AU
+675417600,675418111,NL
675418112,675422207,US
675422208,675430399,FR
675430400,675430407,US
675430408,675430415,NL
675430416,675430423,HK
-675430424,675430431,JP
+675430424,675430431,US
675430432,675430439,FR
675430440,675430447,CA
675430448,675430455,BR
-675430456,675430463,US
-675430464,675430471,FR
-675430472,675430479,CA
-675430480,675430511,US
+675430456,675430511,US
675430512,675430519,IE
675430520,675430535,JP
675430536,675430543,KR
675430544,675430551,SG
-675430552,675430575,IN
+675430552,675430559,US
+675430560,675430575,IN
675430576,675430599,US
675430600,675430615,AU
675430616,675430631,GB
@@ -11173,21 +16106,19 @@
675434496,675435007,JP
675435008,675435519,ZA
675435520,675436031,SG
-675436032,675436543,IE
+675436032,675436543,BR
675436544,675437055,US
675437056,675437567,GB
-675437568,675438079,KR
-675438080,675438591,GB
+675437568,675438591,US
675438592,675439103,ZA
-675439104,675441151,AU
-675441152,675441663,US
+675439104,675441663,US
675441664,675442175,GB
-675442176,675442687,NL
+675442176,675442687,AU
675442688,675443199,US
675443200,675443711,GB
675443712,675444223,NL
-675444224,675444735,SG
-675444736,675528703,US
+675444224,675444479,SG
+675444480,675528703,US
675528704,675536895,NL
675536896,675545087,IE
675545088,675610623,NL
@@ -11248,7 +16179,8 @@
676200192,676200319,IE
676200320,676249599,US
676249600,676251647,IN
-676251648,676254207,US
+676251648,676253951,US
+676253952,676254207,ZA
676254208,676254463,NL
676254464,676254719,IE
676254720,676254975,FI
@@ -11265,7 +16197,8 @@
676313088,676317183,JP
676317184,676317439,MY
676317440,676317951,GB
-676317952,676319231,US
+676317952,676318207,ZA
+676318208,676319231,US
676319232,676319743,JP
676319744,676319999,HK
676320000,676320511,AU
@@ -11285,7 +16218,7 @@
676338688,676339711,AT
676339712,676341759,KR
676341760,676343807,CA
-676343808,676345855,US
+676343808,676345855,IN
676345856,676347903,JP
676347904,676356095,IN
676356096,676374527,US
@@ -11303,18 +16236,24 @@
676454400,676462591,IN
676462592,676465663,US
676465664,676466687,AU
-676466688,676469759,US
+676466688,676467711,US
+676467712,676468735,ZA
+676468736,676469759,US
676469760,676470783,SG
676470784,676471807,AU
676471808,676474879,US
676474880,676475903,JP
676475904,676477951,AE
-676477952,676479999,US
+676477952,676478975,US
+676478976,676479999,ZA
676480000,676482047,DE
676482048,676484095,US
676484096,676485119,NO
676485120,676486143,GB
-676486144,676495359,US
+676486144,676487167,NL
+676487168,676488191,US
+676488192,676489215,JP
+676489216,676495359,US
676495360,676503551,KR
676503552,676511743,CA
676511744,676519935,AU
@@ -11349,17 +16288,27 @@
676991040,676991103,AE
676991104,676991135,US
676991136,676991167,JP
-676991168,676991263,US
+676991168,676991231,US
+676991232,676991263,ZA
676991264,676991295,GB
676991296,676991327,NL
-676991328,677019647,US
+676991328,676991359,US
+676991360,676991391,CA
+676991392,676991423,GB
+676991424,676991455,IE
+676991456,676991487,KR
+676991488,676991503,AU
+676991504,677019647,US
677019648,677019663,CA
677019664,677019695,US
677019696,677019727,AE
677019728,677019743,JP
-677019744,677019759,US
+677019744,677019759,ZA
677019760,677019775,GB
-677019776,677020095,US
+677019776,677019807,US
+677019808,677019823,GB
+677019824,677019839,KR
+677019840,677020095,US
677020096,677020127,IE
677020128,677020159,US
677020160,677020191,NL
@@ -11368,7 +16317,8 @@
677020240,677020255,AU
677020256,677020271,US
677020272,677020303,GB
-677020304,677020351,US
+677020304,677020319,ZA
+677020320,677020351,US
677020352,677020367,CA
677020368,677020383,AU
677020384,677020399,IE
@@ -11428,7 +16378,8 @@
677023456,677023471,NL
677023472,677023519,US
677023520,677023583,GB
-677023584,677023647,US
+677023584,677023615,US
+677023616,677023647,ZA
677023648,677023679,CA
677023680,677023935,US
677023936,677023967,NL
@@ -11463,7 +16414,8 @@
677025312,677025343,US
677025344,677025407,GB
677025408,677025535,NL
-677025536,677025631,US
+677025536,677025599,US
+677025600,677025631,ZA
677025632,677025663,CA
677025664,677025759,US
677025760,677025791,AE
@@ -11471,11 +16423,22 @@
677025920,677025951,AE
677025952,677025983,US
677025984,677026015,JP
-677026016,677026111,US
+677026016,677026047,ZA
+677026048,677026111,US
677026112,677026143,GB
677026144,677026175,US
677026176,677026303,IE
-677026304,677027839,US
+677026304,677026335,US
+677026336,677026367,GB
+677026368,677026431,US
+677026432,677026495,SG
+677026496,677026559,HK
+677026560,677026623,US
+677026624,677026687,AU
+677026688,677026815,US
+677026816,677026879,JP
+677026880,677026911,KR
+677026912,677027839,US
677027840,677036031,SG
677036032,677057535,US
677057536,677058559,IE
@@ -11498,7 +16461,11 @@
677136896,677137151,IE
677137152,677137407,AT
677137408,677137919,FR
-677137920,677182975,US
+677137920,677178879,US
+677178880,677179391,AE
+677179392,677179647,US
+677179648,677179903,SG
+677179904,677182975,US
677182976,677183231,KR
677183232,677199871,US
677199872,677200127,IE
@@ -11514,11 +16481,22 @@
677202432,677202687,IE
677202688,677202943,AT
677202944,677203455,FR
-677203456,677248511,US
+677203456,677244415,US
+677244416,677244927,AE
+677244928,677245183,US
+677245184,677245439,SG
+677245440,677248511,US
677248512,677248767,KR
-677248768,677380095,US
-677380096,677380127,AU
-677380128,677380159,IE
+677248768,677307647,US
+677307648,677308159,AE
+677308160,677308415,US
+677308416,677308671,SG
+677308672,677380095,US
+677380096,677380103,AU
+677380104,677380111,US
+677380112,677380127,AU
+677380128,677380143,IE
+677380144,677380159,US
677380160,677380191,NL
677380192,677380543,US
677380544,677380583,SG
@@ -11527,11 +16505,9 @@
677380720,677380759,KR
677380760,677380767,US
677380768,677380895,KR
-677380896,677380927,AU
+677380896,677380927,US
677380928,677380943,IN
-677380944,677380959,FI
-677380960,677380991,AU
-677380992,677381055,US
+677380944,677381055,US
677381056,677381071,FI
677381072,677381111,HK
677381112,677381119,US
@@ -11551,7 +16527,7 @@
677382480,677382487,FI
677382488,677382495,US
677382496,677382527,NL
-677382528,677382543,CA
+677382528,677382543,US
677382544,677382559,IE
677382560,677382575,US
677382576,677382591,AU
@@ -11559,28 +16535,54 @@
677382624,677382639,CA
677382640,677382719,US
677382720,677382727,IE
-677382728,677382751,FI
+677382728,677382743,FI
+677382744,677382751,US
677382752,677382815,CA
677382816,677382831,NL
-677382832,677382839,FI
-677382840,677383191,BR
+677382832,677382967,US
+677382968,677382975,BR
+677382976,677383039,US
+677383040,677383055,BR
+677383056,677383087,US
+677383088,677383095,BR
+677383096,677383119,US
+677383120,677383127,BR
+677383128,677383143,US
+677383144,677383159,BR
+677383160,677383167,US
+677383168,677383175,BR
+677383176,677383183,US
+677383184,677383191,BR
677383192,677383391,US
-677383392,677383567,NL
+677383392,677383519,NL
+677383520,677383535,US
+677383536,677383551,NL
+677383552,677383567,US
677383568,677383583,MY
677383584,677383615,US
677383616,677383631,MY
677383632,677383695,US
677383696,677383711,MY
677383712,677383775,US
-677383776,677383791,CL
+677383776,677383783,CL
+677383784,677383791,US
677383792,677383823,MY
-677383824,677383983,CL
+677383824,677383839,CL
+677383840,677383927,US
+677383928,677383959,CL
+677383960,677383983,US
677383984,677383999,MY
677384000,677384127,SG
677384128,677384143,US
677384144,677384159,IE
677384160,677384191,US
-677384192,677384367,NL
+677384192,677384239,NL
+677384240,677384255,US
+677384256,677384271,NL
+677384272,677384295,US
+677384296,677384311,NL
+677384312,677384359,US
+677384360,677384367,NL
677384368,677384399,MY
677384400,677384431,AT
677384432,677384463,US
@@ -11605,28 +16607,30 @@
677385936,677385967,US
677385968,677385983,SG
677385984,677385999,FI
-677386000,677386015,US
-677386016,677386047,IN
+677386000,677386047,US
677386048,677386063,HK
677386064,677386095,US
677386096,677386111,BR
-677386112,677386127,CA
-677386128,677386159,US
+677386112,677386159,US
677386160,677386175,BR
677386176,677386207,CA
-677386208,677386239,AU
-677386240,677386359,BR
+677386208,677386239,US
+677386240,677386295,BR
+677386296,677386327,US
+677386328,677386343,BR
+677386344,677386359,US
677386360,677386367,MY
-677386368,677386375,AU
+677386368,677386375,US
677386376,677386399,AT
677386400,677386415,CL
-677386416,677386423,FI
-677386424,677386431,AU
+677386416,677386431,US
677386432,677386439,FI
-677386440,677386495,CL
+677386440,677386463,US
+677386464,677386471,CL
+677386472,677386495,US
677386496,677386527,IE
677386528,677386543,AT
-677386544,677386559,HK
+677386544,677386559,US
677386560,677386575,FI
677386576,677386615,MY
677386616,677386623,IE
@@ -11637,24 +16641,29 @@
677386736,677386751,HK
677386752,677386767,US
677386768,677386799,CA
-677386800,677386967,IE
+677386800,677386879,US
+677386880,677386967,IE
677386968,677387319,US
677387320,677387327,FI
677387328,677387343,US
677387344,677387455,AT
677387456,677387487,FI
-677387488,677387663,US
-677387664,677387839,HK
+677387488,677387679,US
+677387680,677387839,HK
677387840,677387863,AT
677387864,677387967,US
677387968,677388007,FI
677388008,677388183,US
677388184,677388223,FI
-677388224,677388351,US
-677388352,677388527,MY
-677388528,677388703,US
+677388224,677388439,US
+677388440,677388447,MY
+677388448,677388463,US
+677388464,677388471,MY
+677388472,677388703,US
677388704,677388879,FI
-677388880,677389055,NL
+677388880,677388943,NL
+677388944,677388967,US
+677388968,677389055,NL
677389056,677389087,US
677389088,677389231,AT
677389232,677389263,US
@@ -11667,26 +16676,48 @@
677390064,677390239,US
677390240,677390247,FI
677390248,677390255,AT
-677390256,677390983,US
-677390984,677391399,GB
+677390256,677390991,US
+677390992,677391007,GB
+677391008,677391039,US
+677391040,677391359,GB
+677391360,677391391,US
+677391392,677391399,GB
677391400,677391575,US
-677391576,677391959,GB
+677391576,677391871,GB
+677391872,677391935,US
+677391936,677391959,GB
677391960,677392135,US
677392136,677392143,KR
-677392144,677392159,US
-677392160,677392327,KR
-677392328,677392503,MY
-677392504,677392679,HK
-677392680,677392855,SG
-677392856,677393031,NL
-677393032,677393207,US
+677392144,677392175,US
+677392176,677392327,KR
+677392328,677392335,MY
+677392336,677392351,US
+677392352,677392383,MY
+677392384,677392391,US
+677392392,677392503,MY
+677392504,677392527,US
+677392528,677392575,HK
+677392576,677392583,US
+677392584,677392591,HK
+677392592,677392599,US
+677392600,677392631,HK
+677392632,677392639,US
+677392640,677392679,HK
+677392680,677392703,US
+677392704,677392855,SG
+677392856,677392863,US
+677392864,677392895,NL
+677392896,677392903,US
+677392904,677392911,NL
+677392912,677392919,US
+677392920,677393023,NL
+677393024,677393207,US
677393208,677393215,FI
677393216,677393375,AT
677393376,677393383,FI
677393384,677393391,US
677393392,677393407,FI
-677393408,677393535,US
-677393536,677393559,FI
+677393408,677393559,US
677393560,677393575,NL
677393576,677393735,US
677393736,677393743,FI
@@ -11694,41 +16725,94 @@
677393760,677393855,US
677393856,677393863,FI
677393864,677393927,US
-677393928,677394279,JP
+677393928,677394047,JP
+677394048,677394079,US
+677394080,677394095,JP
+677394096,677394111,US
+677394112,677394271,JP
+677394272,677394279,US
677394280,677394287,FI
-677394288,677394303,AU
-677394304,677394431,US
+677394288,677394431,US
677394432,677394447,AU
677394448,677394455,FI
677394456,677394527,JP
677394528,677394559,CL
-677394560,677394591,US
-677394592,677394759,JP
+677394560,677394687,US
+677394688,677394751,JP
+677394752,677394759,US
677394760,677394767,FI
-677394768,677394799,US
-677394800,677394967,FI
-677394968,677395319,AT
-677395320,677395495,NL
-677395496,677395671,IE
+677394768,677394815,US
+677394816,677394903,FI
+677394904,677394911,US
+677394912,677394919,FI
+677394920,677394951,US
+677394952,677394967,FI
+677394968,677394991,AT
+677394992,677395007,US
+677395008,677395039,AT
+677395040,677395047,US
+677395048,677395055,AT
+677395056,677395063,US
+677395064,677395071,AT
+677395072,677395079,US
+677395080,677395087,AT
+677395088,677395095,US
+677395096,677395167,AT
+677395168,677395183,US
+677395184,677395191,AT
+677395192,677395199,US
+677395200,677395207,AT
+677395208,677395215,US
+677395216,677395255,AT
+677395256,677395271,US
+677395272,677395287,AT
+677395288,677395295,US
+677395296,677395319,AT
+677395320,677395327,NL
+677395328,677395343,US
+677395344,677395359,NL
+677395360,677395367,US
+677395368,677395375,NL
+677395376,677395399,US
+677395400,677395455,NL
+677395456,677395463,US
+677395464,677395479,NL
+677395480,677395487,US
+677395488,677395495,NL
+677395496,677395503,IE
+677395504,677395519,US
+677395520,677395671,IE
677395672,677395863,US
677395864,677395871,FI
677395872,677395903,IE
-677395904,677396071,FI
-677396072,677396079,NL
+677395904,677395943,US
+677395944,677396007,FI
+677396008,677396023,US
+677396024,677396071,FI
+677396072,677396079,US
677396080,677396095,IN
-677396096,677396247,NL
-677396248,677396599,IE
-677396600,677396623,FI
-677396624,677396639,IE
-677396640,677396791,FI
-677396792,677396823,US
+677396096,677396175,NL
+677396176,677396183,US
+677396184,677396247,NL
+677396248,677396287,IE
+677396288,677396479,US
+677396480,677396575,IE
+677396576,677396591,US
+677396592,677396599,IE
+677396600,677396607,FI
+677396608,677396639,US
+677396640,677396671,FI
+677396672,677396679,US
+677396680,677396783,FI
+677396784,677396823,US
677396824,677396831,FI
677396832,677642239,US
677642240,677645311,HK
677645312,677646335,US
677646336,677647359,MY
677647360,677648383,KR
-677648384,677651455,SG
+677648384,677649407,US
+677649408,677651455,SG
677651456,677652479,JP
677652480,677653503,HK
677653504,677655551,KR
@@ -11745,7 +16829,8 @@
677679104,677679999,AU
677680000,677680127,US
677680128,677681151,AU
-677681152,677683199,JP
+677681152,677682687,JP
+677682688,677683199,US
677683200,677685247,CA
677685248,677687295,GB
677687296,677707775,US
@@ -11756,7 +16841,13 @@
677714944,677715967,FI
677715968,677720063,IE
677720064,677721087,FI
-677721088,677722111,AT
+677721088,677721423,AT
+677721424,677721439,US
+677721440,677721471,AT
+677721472,677721479,US
+677721480,677721535,AT
+677721536,677721543,US
+677721544,677722111,AT
677722112,677723135,US
677723136,677724159,NL
677724160,677725183,FI
@@ -11779,9 +16870,8 @@
677748736,677774335,US
677774336,677776383,BR
677776384,677781503,US
-677781504,677783551,CL
-677783552,677784575,ZA
-677784576,677838847,US
+677781504,677782527,CL
+677782528,677838847,US
677838848,677838863,NL
677838864,677838879,IE
677838880,677838895,FI
@@ -12053,11 +17143,7 @@
677853968,677853983,IE
677853984,677853999,FI
677854000,677854015,NL
-677854016,677854159,US
-677854160,677854175,FI
-677854176,677854287,US
-677854288,677854303,FI
-677854304,678100991,US
+677854016,678100991,US
678100992,678101247,NL
678101248,678101503,FI
678101504,678101759,AT
@@ -12082,7 +17168,9 @@
678135040,678135295,HK
678135296,678136319,US
678136320,678136831,IN
-678136832,678150143,US
+678136832,678137343,US
+678137344,678137855,AE
+678137856,678150143,US
678150144,678150399,FI
678150400,678150655,IE
678150656,678150911,FI
@@ -12226,7 +17314,8 @@
678756352,678764543,AU
678764544,678821887,US
678821888,678854655,NL
-678854656,678905855,US
+678854656,678903807,US
+678903808,678905855,ZA
678905856,678907903,AE
678907904,678909951,CH
678909952,678910975,US
@@ -12277,7 +17366,9 @@
679428096,679436287,AU
679436288,679440383,IE
679440384,679444479,US
-679444480,679477247,IE
+679444480,679457627,IE
+679457628,679457628,BG
+679457629,679477247,IE
679477248,687865855,US
687865856,689963007,ZA
689963008,691011583,EG
@@ -12341,7 +17432,9 @@
692625408,692626687,KE
692626688,692626943,AO
692626944,692633599,KE
-692633600,692637135,MU
+692633600,692637061,MU
+692637062,692637062,KE
+692637063,692637135,MU
692637136,692637139,KE
692637140,692641791,MU
692641792,692649983,GA
@@ -12388,7 +17481,8 @@
692852736,692854783,GH
692854784,692856831,ZA
692856832,692858879,MU
-692858880,692859391,UG
+692858880,692859135,US
+692859136,692859391,UG
692859392,692859647,NL
692859648,692860927,UG
692860928,692862975,ZA
@@ -12556,9 +17650,7 @@
693485568,693493759,ZW
693493760,693501951,ZA
693501952,693510143,LR
-693510144,693512991,SC
-693512992,693513215,GB
-693513216,693518335,SC
+693510144,693518335,SC
693518336,693534719,ZA
693534720,693542911,NG
693542912,693551103,TZ
@@ -12571,9 +17663,7 @@
693608448,693616639,BW
693616640,693633023,ZA
693633024,693698559,EG
-693698560,693766143,KE
-693766144,693766655,AU
-693766656,693829631,KE
+693698560,693829631,KE
693829632,693895167,EG
693895168,693927935,MA
693927936,693960703,CM
@@ -12615,7 +17705,9 @@
699334656,699342847,ZM
699342848,699359231,ZA
699359232,699367423,ZW
-699367424,699400191,ZA
+699367424,699375615,ZA
+699375616,699377663,GB
+699377664,699400191,ZA
699400192,699465727,EG
699465728,699531263,ZA
699531264,699662335,EG
@@ -12649,9 +17741,7 @@
700342272,700350463,NA
700350464,700351487,MU
700351488,700352511,UG
-700352512,700353535,MU
-700353536,700354559,UG
-700354560,700358655,MU
+700352512,700358655,MU
700358656,700366847,MZ
700366848,700375039,UG
700375040,700376063,CM
@@ -13008,7 +18098,9 @@
703754240,703755263,GH
703755264,703756287,YT
703756288,703757311,ZA
-703757312,703758335,RE
+703757312,703757823,RE
+703757824,703757951,YT
+703757952,703758335,RE
703758336,703759359,CD
703760384,703761407,GH
703761408,703762431,RW
@@ -13233,9 +18325,7 @@
736334848,736335871,ID
736335872,736354303,CN
736354304,736355327,IN
-736355328,736355583,SG
-736355584,736355711,GB
-736355712,736356351,SG
+736355328,736356351,SG
736356352,736357375,CN
736357376,736358399,HK
736358400,736359423,SG
@@ -13320,8 +18410,7 @@
736462848,736465919,CN
736465920,736466943,TH
736466944,736467967,HK
-736467968,736468735,SG
-736468736,736468991,GB
+736467968,736468991,SG
736468992,736470015,IN
736470016,736471039,PK
736471040,736479231,CN
@@ -13359,8 +18448,7 @@
736519168,736520191,AU
736520192,736521215,IN
736521216,736521471,US
-736521472,736521727,PH
-736521728,736521747,AU
+736521472,736521747,AU
736521748,736521748,US
736521749,736522239,AU
736522240,736524287,HK
@@ -13408,7 +18496,7 @@
736559104,736560127,HK
736560128,736561151,MY
736561152,736562175,HK
-736562176,736563199,SG
+736562176,736563199,US
736563200,736564223,HK
736564224,736565247,BD
736565248,736566271,AU
@@ -13437,8 +18525,7 @@
736613376,736615423,IN
736615424,736616447,JP
736616448,736617471,MY
-736617472,736617983,PH
-736617984,736618495,CN
+736617472,736618495,PH
736618496,736621567,IN
736621568,736622591,JP
736622592,736624639,IN
@@ -13452,9 +18539,7 @@
737104896,737105919,HK
737105920,737106943,IN
737106944,737108991,NZ
-737108992,737109503,SG
-737109504,737109759,AU
-737109760,737110015,SG
+737108992,737110015,SG
737110016,737111039,JP
737111040,737113087,IN
737113088,737115135,CN
@@ -14102,7 +19187,9 @@
738193408,738194431,TH
738194432,738195455,CN
738195456,738197503,KR
-738197504,746786047,US
+738197504,746783743,US
+746783744,746784255,GB
+746784256,746786047,US
746786048,746786559,GB
746786560,746973439,US
746973440,746973695,ES
@@ -14231,7 +19318,9 @@
755493888,755494911,HN
755494912,755499007,AR
756023296,757071871,US
-757071872,757071911,NL
+757071872,757071887,NL
+757071888,757071895,US
+757071896,757071911,NL
757071912,757071919,US
757071920,757071951,NL
757071952,757071975,US
@@ -14292,7 +19381,9 @@
757176320,757176575,FR
757176576,757178111,US
757178112,757178367,IT
-757178368,757188607,US
+757178368,757186559,US
+757186560,757187071,PR
+757187072,757188607,US
757188608,757189119,CA
757189120,757600255,US
757600256,757604351,CA
@@ -14329,9 +19420,9 @@
757716736,757716991,NZ
757716992,757721599,US
757721600,757721855,PH
-757721856,757727487,US
-757727488,757727999,VI
-757728000,757729279,US
+757721856,757727231,US
+757727232,757728255,VI
+757728256,757729279,US
757729280,757731327,CA
757731328,757733375,US
757733376,757734399,CA
@@ -14725,9 +19816,7 @@
758984064,758984191,SO
758984192,758990335,US
758990336,758990847,PK
-758990848,759001087,US
-759001088,759005183,CN
-759005184,759047423,US
+758990848,759047423,US
759047424,759047679,IN
759047680,759048191,US
759048192,759048447,PK
@@ -14855,7 +19944,7 @@
759263232,759264255,GB
759264256,759265279,SK
759265280,759266303,MD
-759266304,759267327,LT
+759266304,759267327,LV
759267328,759269375,BR
759269376,759270399,CO
759270400,759272447,BR
@@ -14881,7 +19970,6 @@
759299072,759299327,AR
759299328,759299583,BR
759299584,759300095,PA
-759496704,759498751,GB
759562240,759564287,BR
759564288,759565311,AR
759565312,759566335,EC
@@ -15056,8 +20144,7 @@
759807744,759807999,AU
759808000,759824639,US
759824640,759824895,SA
-759824896,759825151,CR
-759825152,759825407,US
+759824896,759825407,US
759825408,759825663,DE
759825664,759828735,US
759828736,759828863,GT
@@ -15104,7 +20191,7 @@
759835392,759835647,AU
759835648,759835903,SE
759835904,759836159,US
-759836160,759836415,SE
+759836160,759836415,MT
759836416,759839999,US
759840000,759840255,CA
759840256,759840511,GB
@@ -15126,7 +20213,9 @@
759967744,759969791,JP
759969792,759975935,US
759975936,759980031,DE
-759980032,759984127,JP
+759980032,759983119,JP
+759983120,759983135,US
+759983136,759984127,JP
759984128,759988223,AU
759988224,759992319,GB
759992320,759997439,SG
@@ -15323,9 +20412,7 @@
762524672,762527743,IN
762527744,762528767,ID
762528768,762529791,AU
-762529792,762530047,TL
-762530048,762530303,ID
-762530304,762530815,TL
+762529792,762530815,TL
762530816,762531839,IN
762531840,762532863,KH
762532864,762533887,PK
@@ -15353,7 +20440,7 @@
762561536,762562559,HK
762562560,762563583,CN
762563584,762564607,AU
-762564608,762565631,IN
+762564608,762565631,KH
762565632,762566655,CN
762567680,762568703,MY
762568704,762569727,BD
@@ -15476,8 +20563,8 @@
762771456,762775551,HK
762775552,762783743,IN
762783744,762783999,CH
-762784000,762784511,KR
-762784512,762784767,CH
+762784000,762784255,KR
+762784256,762784767,CH
762784768,762786815,IN
762786816,762787839,CN
762787840,762788863,IN
@@ -15617,7 +20704,7 @@
763000832,763003903,IN
763003904,763005951,HK
763005952,763010047,IN
-763010048,763011071,SG
+763010048,763011071,HK
763011072,763026431,CN
763026432,763027455,VN
763027456,763028479,JP
@@ -15691,7 +20778,9 @@
763145216,763147263,CN
763147264,763152383,IN
763152384,763153407,AU
-763153408,763154431,JP
+763153408,763153663,JP
+763153664,763153919,PH
+763153920,763154431,JP
763154432,763155455,CN
763155456,763156479,AU
763156480,763158527,JP
@@ -15741,8 +20830,7 @@
763227136,763228159,VN
763228160,763229183,JP
763229184,763229439,NZ
-763229440,763229695,JP
-763229696,763229951,IN
+763229440,763229951,IN
763229952,763230207,AU
763230208,763231231,PH
763231232,763232255,IN
@@ -15887,9 +20975,9 @@
765569024,765571071,AR
765571072,765572095,BR
765572096,765573119,AR
-765573120,765586431,BR
-765586432,765587455,PY
-765587456,765591551,BR
+765573120,765574143,BR
+765574144,765575167,CL
+765575168,765591551,BR
765591552,765592575,CO
765592576,765596671,BR
765596672,765597183,AR
@@ -15907,7 +20995,8 @@
765617152,765618175,AR
765618176,765619199,BR
765619200,765620223,AR
-765620224,765623807,BR
+765620224,765623551,BR
+765623552,765623807,AR
765623808,765624063,CO
765624064,765627391,BR
765627392,765628415,AR
@@ -15916,9 +21005,7 @@
765635584,765637631,BR
765637632,765638655,PY
765638656,765639679,CL
-765639680,765640703,BR
-765640704,765641727,CL
-765641728,765643775,BR
+765639680,765643775,BR
765643776,765644799,CR
765644800,765657087,BR
765657088,765658111,CO
@@ -16016,7 +21103,7 @@
765943808,765947903,BR
765947904,765948927,MX
765948928,765949951,BR
-765949952,765950207,AR
+765949952,765950463,AR
765950464,765950975,BR
765950976,765951743,CO
765951744,765951999,AR
@@ -16024,21 +21111,20 @@
765959168,765960191,MX
765960192,765962239,BR
765962240,765963263,AR
-765963264,765968383,BR
+765963264,765964287,BR
+765964288,765964799,MX
+765964800,765968383,BR
765968384,765969407,CL
765969408,765970431,CR
765970432,765971455,MX
765971456,765973503,BR
765973504,765974527,AR
-765974528,765975551,BR
-765975552,765976575,AR
-765976576,765977599,BR
+765974528,765977599,BR
765977600,765978623,PE
-765978624,765979647,BR
-765980672,765981695,BR
+765978624,765982719,BR
765982720,765983743,CO
765983744,765984767,MX
-765984768,766001151,BR
+765984768,766002175,BR
766002176,766003199,CL
766003200,766005247,BR
766005248,766005503,AR
@@ -16049,22 +21135,62 @@
766029824,766033919,BR
766033920,766034943,AR
766034944,766035967,CR
-766036992,766038015,BR
+766035968,766039039,BR
+766039040,766040063,AR
766040064,766043135,BR
766043136,766046207,MX
-766046208,766058495,BR
+766046208,766059519,BR
766059520,766060543,PE
-766060544,766062591,BR
+766060544,766063615,BR
766063616,766064127,AR
+766064128,766064639,CL
+766064640,766065663,BR
766065664,766066687,PE
-766066688,766074879,BR
+766066688,766073855,BR
+766073856,766074879,PE
+766074880,766075135,PA
766075136,766075391,BR
766075904,766076927,PE
-766077952,766078975,BR
+766076928,766077951,AR
+766077952,766086143,BR
+766086144,766087167,VE
766087168,766088191,EC
766088192,766089215,CL
+766089216,766091263,BR
766092032,766092287,CL
766092288,766093311,GF
+766093312,766094335,AR
+766095360,766099455,BR
+766099456,766100479,DO
+766100480,766110719,BR
+766110720,766111743,MX
+766111744,766112767,BR
+766112768,766113791,HN
+766113792,766114303,BR
+766114304,766114559,AR
+766115328,766117887,BR
+766117888,766118911,AR
+766118912,766119935,HN
+766119936,766121983,BR
+766123008,766124031,SV
+766124032,766125055,HN
+766126080,766127103,AR
+766127104,766128127,EC
+766128128,766129151,PE
+766130176,766136319,BR
+766138368,766141439,BR
+766141440,766142463,CL
+766142464,766143487,PY
+766144512,766147583,BR
+766147584,766148607,CO
+766148608,766149631,PY
+766149632,766150655,CO
+766150656,766153727,BR
+766154752,766162943,BR
+766162944,766163967,AR
+766163968,766164991,MX
+766169088,766170111,BR
+766179328,766181375,MX
767557632,767623167,ZA
767623168,767688703,HK
767688704,767723329,ZA
@@ -16530,7 +21656,11 @@
770471936,770472191,VE
770472192,770472959,BR
770472960,770475007,CL
-770475008,770483199,BR
+770475008,770477055,BR
+770477056,770478079,BZ
+770478080,770479103,BR
+770479104,770480127,EC
+770480128,770483199,BR
770483200,770484223,CL
770484224,770485247,EC
770485248,770485759,PE
@@ -16611,7 +21741,8 @@
770659328,770660351,AR
770660352,770661375,CO
770661376,770662399,AR
-770662400,770665215,BR
+770662400,770663423,CL
+770663424,770665215,BR
770665216,770665471,AR
770665472,770666751,CL
770666752,770667007,BR
@@ -16699,7 +21830,8 @@
771384320,771385343,ID
771385344,771398655,CN
771398656,771399679,PH
-771399680,771400703,AU
+771399680,771399935,AU
+771399936,771400703,SG
771400704,771401727,CN
771401728,771402751,IN
771402752,771403775,HK
@@ -16791,7 +21923,8 @@
771719168,771719423,IN
771719424,771720191,US
771720192,771720447,NL
-771720448,771720959,CN
+771720448,771720703,HK
+771720704,771720959,CN
771720960,771721215,JP
771721216,771750911,CN
771750912,771751935,MY
@@ -16908,8 +22041,8 @@
772945920,772947967,DE
772947968,772950015,AZ
772950016,772952063,ES
-772952064,772953087,US
-772953088,772954111,GB
+772952064,772952319,US
+772952320,772954111,GB
772954112,772958207,FR
772958208,772962303,GB
772962304,772966399,FR
@@ -17020,7 +22153,7 @@
773206016,773210111,RU
773210112,773210623,US
773210624,773211135,ES
-773211136,773211391,FR
+773211136,773211391,OM
773211392,773211647,US
773211648,773211903,NL
773211904,773212159,SG
@@ -17111,7 +22244,9 @@
773689344,773691391,PL
773691392,773695487,RU
773695488,773697535,MK
-773697536,773699583,LU
+773697536,773698815,LU
+773698816,773699327,BE
+773699328,773699583,LU
773699584,773701631,CZ
773701632,773703679,RU
773703680,773705727,IT
@@ -17201,9 +22336,7 @@
773898240,773906431,PS
773906432,773922815,GB
773922816,773931007,UA
-773931008,773934079,FR
-773934080,773934335,DE
-773934336,773935352,FR
+773931008,773935352,FR
773935353,773935353,US
773935354,773935728,FR
773935729,773935729,GB
@@ -17263,9 +22396,7 @@
774141440,774143999,AM
774144000,774152191,KZ
774152192,774160383,BA
-774160384,774161151,GB
-774161152,774161279,DE
-774161280,774162431,GB
+774160384,774162431,GB
774162432,774162432,VA
774162433,774162442,GB
774162443,774162452,BA
@@ -17408,9 +22539,7 @@
774242304,774258687,RU
774258688,774266879,SA
774266880,774275071,RU
-774275072,774280191,IR
-774280192,774281215,GB
-774281216,774283263,IR
+774275072,774283263,IR
774283264,774291455,GB
774291456,774299647,NL
774299648,774307839,DE
@@ -17448,7 +22577,9 @@
774750208,774782975,RU
774782976,774799359,UA
774799360,774815743,RU
-774815744,774832127,NO
+774815744,774819839,NO
+774819840,774830079,SE
+774830080,774832127,NO
774832128,774848511,RU
774848512,774864895,BG
774864896,774881279,CZ
@@ -17457,9 +22588,9 @@
774995968,775028735,SA
775028736,775061503,PT
775061504,775094271,RU
-775094272,775111877,RO
-775111878,775111878,IR
-775111879,775127039,RO
+775094272,775121919,IR
+775121920,775122175,RO
+775122176,775127039,IR
775127040,775147519,IE
775147520,775149567,NL
775149568,775151615,SG
@@ -17521,7 +22652,7 @@
778466560,778467327,RO
778467328,778473471,IR
778473472,778474495,RO
-778474496,778475519,US
+778474496,778475519,GB
778475520,778475775,CH
778475776,778476031,RO
778476032,778476287,IE
@@ -17562,9 +22693,13 @@
778653936,778653951,GB
778653952,778654031,FR
778654032,778654039,ES
-778654040,778654495,FR
+778654040,778654179,FR
+778654180,778654183,GB
+778654184,778654495,FR
778654496,778654527,DE
-778654528,778654903,FR
+778654528,778654847,FR
+778654848,778654863,GB
+778654864,778654903,FR
778654904,778654907,GB
778654908,778654927,FR
778654928,778654935,ES
@@ -17693,7 +22828,9 @@
778670408,778670411,DE
778670412,778670751,FR
778670752,778670755,DE
-778670756,778670975,FR
+778670756,778670827,FR
+778670828,778670831,BE
+778670832,778670975,FR
778670976,778671103,DE
778671104,778671201,FR
778671202,778671202,ES
@@ -17730,7 +22867,9 @@
778673388,778673391,DE
778673392,778673631,FR
778673632,778673647,DE
-778673648,778673751,FR
+778673648,778673719,FR
+778673720,778673723,GB
+778673724,778673751,FR
778673752,778673759,DE
778673760,778673851,FR
778673852,778673855,NL
@@ -17774,7 +22913,9 @@
778675800,778675819,FR
778675820,778675823,GB
778675824,778675827,ES
-778675828,778675891,FR
+778675828,778675831,FR
+778675832,778675835,NL
+778675836,778675891,FR
778675892,778675895,ES
778675896,778675915,FR
778675916,778675919,DE
@@ -17806,7 +22947,9 @@
778676768,778676771,PL
778676772,778676775,FR
778676776,778676779,PL
-778676780,778677083,FR
+778676780,778676863,FR
+778676864,778676991,BE
+778676992,778677083,FR
778677084,778677087,DE
778677088,778677095,FR
778677096,778677099,PL
@@ -17836,7 +22979,9 @@
778678004,778678007,PL
778678008,778678015,FR
778678016,778678019,PL
-778678020,778678159,FR
+778678020,778678111,FR
+778678112,778678115,IE
+778678116,778678159,FR
778678160,778678163,PL
778678164,778678207,FR
778678208,778678271,PL
@@ -17914,7 +23059,9 @@
778687432,778687439,IT
778687440,778688447,FR
778688448,778688451,CZ
-778688452,778689007,FR
+778688452,778688571,FR
+778688572,778688575,IE
+778688576,778689007,FR
778689008,778689015,FI
778689016,778689151,FR
778689152,778689183,CZ
@@ -18083,9 +23230,7 @@
778698448,778698451,ES
778698452,778698543,FR
778698544,778698551,DE
-778698552,778698591,FR
-778698592,778698595,BE
-778698596,778698627,FR
+778698552,778698627,FR
778698628,778698631,ES
778698632,778698643,FR
778698644,778698647,ES
@@ -18098,11 +23243,15 @@
778698720,778698751,FR
778698752,778764287,TR
778764288,778822655,HU
-778822656,778823167,UA
-778823168,778829823,HU
+778822656,778823679,UA
+778823680,778829823,HU
778829824,778839856,DE
778839857,778839857,RO
-778839858,778883071,DE
+778839858,778846207,DE
+778846208,778848255,GB
+778848256,778850303,DE
+778850304,778852351,GB
+778852352,778883071,DE
778883072,778885119,GB
778885120,778895359,DE
778895360,778960895,LV
@@ -18115,7 +23264,11 @@
779616256,779747327,IL
779747328,779878399,SI
779878400,780009471,AT
-780009472,780140543,CH
+780009472,780025343,CH
+780025344,780025471,DE
+780025472,780025599,CH
+780025600,780025855,DE
+780025856,780140543,CH
780140544,780206079,DE
780206080,780271615,NL
780271616,780337151,AM
@@ -18133,12 +23286,14 @@
780992512,781058047,IT
781058048,781109823,DE
781109824,781109855,NL
-781109856,781109919,DE
+781109856,781109887,DE
+781109888,781109903,NL
+781109904,781109919,DE
781109920,781109935,NL
781109936,781109951,DE
781109952,781109999,NL
-781110000,781110031,DE
-781110032,781110095,NL
+781110000,781110015,DE
+781110016,781110095,NL
781110096,781123583,DE
781123584,781156351,AE
781156352,781172735,SA
@@ -18156,8 +23311,8 @@
781480448,781480703,BE
781480704,781481215,UA
781481216,781481471,RO
-781481472,781481983,GB
-781481984,781484031,UA
+781481472,781481727,GB
+781481728,781484031,UA
781484032,781488127,RU
781488128,781496319,PL
781496320,781496867,UA
@@ -18176,10 +23331,9 @@
781557760,781558783,TR
781558784,781559807,RU
781559808,781560831,IT
-781560832,781561599,RU
-781561600,781561855,GB
+781560832,781561855,RU
781561856,781565951,UA
-781565952,781570047,IT
+781565952,781570047,HK
781570048,781574143,PL
781574144,781578239,RU
781578240,781582335,GB
@@ -18219,9 +23373,7 @@
781709312,781711359,RU
781711360,781713407,UA
781713408,781844479,SA
-781844480,781865215,TR
-781865216,781865471,GB
-781865472,781975551,TR
+781844480,781975551,TR
781975552,782106623,NO
782106624,782254079,RU
782254080,782270463,UA
@@ -18410,8 +23562,7 @@
783765504,783767551,RU
783767552,783769599,IL
783769600,783771647,DE
-783771648,783772671,GB
-783772672,783773695,FR
+783771648,783773695,GB
783773696,783775743,ES
783775744,783777791,AL
783777792,783779839,RU
@@ -18457,10 +23608,16 @@
784203776,784236543,GR
784236544,784237567,IT
784237568,784238591,ES
-784238592,784242687,GB
-784242688,784248831,DE
+784238592,784244735,GB
+784244736,784248831,DE
784248832,784250879,GB
-784250880,784268287,DE
+784250880,784254975,DE
+784254976,784257023,GB
+784257024,784259071,DE
+784259072,784261119,GB
+784261120,784263167,DE
+784263168,784265215,GB
+784265216,784268287,DE
784268288,784269311,GB
784269312,784302079,BY
784302080,784334847,RU
@@ -18487,9 +23644,7 @@
785842176,785907711,PL
785907712,785973247,BY
785973248,786038783,MK
-786038784,786053631,FR
-786053632,786053887,CA
-786053888,786104319,FR
+786038784,786104319,FR
786104320,786169855,UA
786169856,786235391,AT
786235392,786300927,TR
@@ -18501,11 +23656,9 @@
786567168,786569215,CZ
786569216,786571263,NO
786571264,786575359,ES
-786575360,786575999,GB
-786576000,786576098,NL
+786575360,786576098,GB
786576099,786576099,SE
-786576100,786576127,NL
-786576128,786577407,GB
+786576100,786577407,GB
786577408,786579455,NL
786579456,786581503,RU
786581504,786583551,GB
@@ -18594,8 +23747,8 @@
786821120,786824703,HR
786824704,786825215,CN
786825216,786857983,SA
-786857984,786868223,NO
-786868224,786890751,SE
+786857984,786862079,NO
+786862080,786890751,SE
786890752,786892799,ES
786892800,786894847,GB
786894848,786896895,NL
@@ -18673,7 +23826,7 @@
787096576,787097855,CH
787098112,787098879,CH
787099392,787100671,CH
-787101696,787103743,CH
+787101696,787102719,CH
787103744,787111935,HR
787111936,787115775,CZ
787115776,787116031,SK
@@ -18748,7 +23901,8 @@
787578880,787611647,AM
787611648,787644415,RU
787644416,787677183,PL
-787677184,787679231,GB
+787677184,787678207,GB
+787678208,787679231,CZ
787679232,787681279,RU
787681280,787683327,IQ
787683328,787685375,NL
@@ -18758,9 +23912,7 @@
787691520,787692543,FR
787692544,787693567,RU
787693568,787695615,SK
-787695616,787696639,DE
-787696640,787697662,US
-787697663,787701759,DE
+787695616,787701759,DE
787701760,787703807,NL
787703808,787705855,AT
787705856,787707903,RO
@@ -18788,8 +23940,8 @@
787719168,787719935,RU
787719936,787720191,NL
787720192,787721471,RU
-787721472,787721599,NL
-787721600,787722239,RU
+787721472,787721727,NL
+787721728,787722239,RU
787722240,787722751,NL
787722752,787725311,RU
787725312,787729407,NL
@@ -18803,8 +23955,8 @@
787732736,787733247,BE
787733248,787733759,RU
787733760,787734015,AT
-787734016,787734271,IE
-787734272,787734527,FR
+787734016,787734271,CA
+787734272,787734527,GB
787734528,787736575,US
787736576,787737599,GB
787737600,787738367,DE
@@ -18814,7 +23966,7 @@
787739136,787739903,CA
787739904,787740671,AU
787740672,787740927,NL
-787740928,787741183,GB
+787740928,787741183,US
787741184,787741439,HK
787741440,787741695,US
787741696,787742719,RU
@@ -18877,7 +24029,9 @@
787900416,787900671,DE
787900672,787900927,SE
787900928,787901183,DK
-787901184,787906559,SE
+787901184,787905023,SE
+787905024,787905279,NO
+787905280,787906559,SE
787906560,787939327,GR
787939328,787972095,GB
787972096,788004863,UA
@@ -18898,17 +24052,7 @@
788012544,788013055,RU
788013056,788021247,IR
788021248,788029439,SI
-788029440,788038655,GB
-788038656,788039167,PL
-788039168,788039679,GB
-788039680,788040191,RO
-788040192,788040703,GB
-788040704,788041215,FI
-788041216,788041727,SK
-788041728,788042239,HU
-788042240,788042751,BG
-788042752,788043263,CZ
-788043264,788045823,GB
+788029440,788045823,GB
788045824,788054015,PL
788054016,788062207,JO
788062208,788070399,GB
@@ -19036,7 +24180,8 @@
788509712,788509951,AT
788509952,788509983,FR
788509984,788510079,AT
-788510080,788510719,FR
+788510080,788510207,FR
+788510208,788510719,AT
788510720,788512320,ES
788512321,788512383,NO
788512384,788512767,ES
@@ -19067,9 +24212,9 @@
792389632,792390655,US
792390656,792391679,ES
792391680,792395775,US
-792395776,792412159,ES
-792412160,792413183,US
-792413184,792430591,ES
+792395776,792397823,ES
+792397824,792399871,US
+792399872,792430591,ES
792430592,792440831,US
792440832,792442879,ES
792442880,792444927,US
@@ -19177,7 +24322,9 @@
830210048,830341119,MY
830341120,830406655,NP
830406656,830472191,AU
-830472192,830474239,CN
+830472192,830472447,CN
+830472448,830472703,BD
+830472704,830474239,CN
830474240,830475263,SG
830475264,830476287,AU
830476288,830480383,JP
@@ -19269,14 +24416,14 @@
838336512,838467583,IN
838467584,838729727,JP
838729728,838795263,KR
-838795264,838833375,AU
-838833376,838833379,NZ
-838833380,838835711,AU
-838835712,838836223,NZ
+838795264,838813695,AU
+838813696,838814207,NZ
+838814208,838835967,AU
+838835968,838836223,NZ
838836224,838849023,AU
838849024,838849535,NZ
-838849536,838860799,AU
-838860800,838991871,US
+838849536,838860543,AU
+838860544,838991871,US
838991872,838994943,DE
838994944,838995967,US
838995968,839008511,DE
@@ -19400,7 +24547,9 @@
846650368,846650879,CN
846650880,846659583,US
846659584,846725119,SA
-846725120,853622019,US
+846725120,852335615,US
+852335616,852336127,PR
+852336128,853622019,US
853622020,853622020,DE
853622021,853622096,US
853622097,853622098,GB
@@ -19436,13 +24585,17 @@
858129600,858129607,NL
858129608,858131343,FR
858131344,858131359,ES
-858131360,858132299,FR
+858131360,858131543,FR
+858131544,858131547,ES
+858131548,858132299,FR
858132300,858132303,GB
858132304,858132831,FR
858132832,858132863,CZ
858132864,858133759,FR
858133760,858133887,ES
-858133888,858134143,FR
+858133888,858133903,FR
+858133904,858133907,BE
+858133908,858134143,FR
858134144,858134175,GB
858134176,858135423,FR
858135424,858135551,IT
@@ -19465,9 +24618,7 @@
858147136,858147199,GB
858147200,858147231,FR
858147232,858147263,GB
-858147264,858147295,FR
-858147296,858147311,GB
-858147312,858147391,FR
+858147264,858147391,FR
858147392,858147455,GB
858147456,858147519,FR
858147520,858147711,GB
@@ -19475,8 +24626,8 @@
858148144,858148159,GB
858148160,858148607,FR
858148608,858148671,GB
-858148672,858148751,FR
-858148752,858148799,GB
+858148672,858148767,FR
+858148768,858148799,GB
858148800,858148863,FR
858148864,858149887,GB
858149888,858149919,FR
@@ -19614,9 +24765,7 @@
858163728,858163743,PL
858163744,858163823,FR
858163824,858163839,PL
-858163840,858163935,FR
-858163936,858163951,PL
-858163952,858164351,FR
+858163840,858164351,FR
858164352,858164415,PL
858164416,858164735,FR
858164736,858164863,PL
@@ -19678,7 +24827,11 @@
858173208,858173215,FI
858173216,858173227,FR
858173228,858173231,BE
-858173232,858178239,FR
+858173232,858173383,FR
+858173384,858173387,IE
+858173388,858173415,FR
+858173416,858173419,NL
+858173420,858178239,FR
858178240,858178271,GB
858178272,858179583,FR
858179584,858179711,ES
@@ -19689,11 +24842,10 @@
858181248,858182399,FR
858182400,858182527,IT
858182528,858182655,ES
-858182656,858182911,FR
-858182912,858182927,ES
-858182928,858183935,FR
+858182656,858183935,FR
858183936,858183967,FI
-858183968,858185087,FR
+858183968,858184959,FR
+858184960,858185087,GB
858185088,858185215,ES
858185216,858191103,FR
858191104,858191231,IT
@@ -19716,9 +24868,7 @@
860099328,860099455,IT
860099456,860100607,FR
860100608,860100735,ES
-860100736,860101543,FR
-860101544,860101551,GB
-860101552,860101611,FR
+860100736,860101611,FR
860101612,860101615,PL
860101616,860108255,FR
860108256,860108287,GB
@@ -19729,14 +24879,14 @@
860109696,860109823,NL
860109824,860110207,FR
860110208,860110215,DE
-860110216,860110287,FR
+860110216,860110275,FR
+860110276,860110279,GB
+860110280,860110287,FR
860110288,860110295,DE
860110296,860110299,PL
860110300,860110355,FR
860110356,860110359,DE
-860110360,860110519,FR
-860110520,860110523,GB
-860110524,860110567,FR
+860110360,860110567,FR
860110568,860110575,DE
860110576,860110687,FR
860110688,860110703,GB
@@ -19759,7 +24909,9 @@
860121504,860121535,FI
860121536,860121599,FR
860121600,860121727,IT
-860121728,860122751,FR
+860121728,860122227,FR
+860122228,860122231,IE
+860122232,860122751,FR
860122752,860122879,IT
860122880,860127231,FR
860127232,860127295,PL
@@ -19828,7 +24980,9 @@
860138192,860138207,FR
860138208,860138223,FI
860138224,860138239,CZ
-860138240,860138351,FR
+860138240,860138287,FR
+860138288,860138303,BE
+860138304,860138351,FR
860138352,860138367,ES
860138368,860138383,NL
860138384,860138431,FR
@@ -19865,8 +25019,12 @@
860141520,860141567,FR
860141568,860141583,DE
860141584,860141727,FR
-860141728,860141743,DE
-860141744,860141903,FR
+860141728,860141775,DE
+860141776,860141807,FR
+860141808,860141823,NL
+860141824,860141855,FR
+860141856,860141887,DE
+860141888,860141903,FR
860141904,860141919,NL
860141920,860141935,PT
860141936,860141951,CH
@@ -19925,13 +25083,13 @@
860148736,860149951,GB
860149952,860149999,FR
860150000,860150015,GB
-860150016,860150335,FR
-860150336,860150527,GB
+860150016,860150327,FR
+860150328,860150527,GB
860150528,860150631,FR
860150632,860150639,GB
-860150640,860150783,FR
-860150784,860151807,GB
-860151808,860157183,FR
+860150640,860151039,FR
+860151040,860151295,GB
+860151296,860157183,FR
860157184,860157311,IT
860157312,860159103,FR
860159104,860159231,BE
@@ -19940,11 +25098,7 @@
860553216,860561471,FR
860561472,860561535,PL
860561536,860561599,FR
-860561600,860561663,PL
-860561664,860561807,FR
-860561808,860561811,PL
-860561812,860561919,FR
-860561920,860562111,PL
+860561600,860562111,PL
860562112,860562239,FR
860562240,860562303,PL
860562304,860562431,FR
@@ -19957,7 +25111,9 @@
860562880,860562943,PL
860562944,860563263,FR
860563264,860563327,PL
-860563328,860563919,FR
+860563328,860563855,FR
+860563856,860563871,PL
+860563872,860563919,FR
860563920,860563935,PL
860563936,860563967,FR
860563968,860564287,PL
@@ -19967,9 +25123,13 @@
860564896,860564911,PL
860564912,860565095,FR
860565096,860565103,PL
-860565104,860565183,FR
+860565104,860565135,FR
+860565136,860565143,PL
+860565144,860565183,FR
860565184,860565311,PL
-860565312,860565823,FR
+860565312,860565395,FR
+860565396,860565399,PL
+860565400,860565823,FR
860565824,860565951,PL
860565952,860566071,FR
860566072,860566207,PL
@@ -20032,7 +25192,9 @@
860575744,860577791,DE
860577792,860578175,FR
860578176,860578239,GB
-860578240,860579455,FR
+860578240,860578591,FR
+860578592,860578623,ES
+860578624,860579455,FR
860579456,860579583,BE
860579584,860580191,FR
860580192,860580223,GB
@@ -20096,17 +25258,37 @@
860597376,860597439,GB
860597440,860597503,FR
860597504,860597567,GB
-860597568,860597759,FR
+860597568,860597583,FR
+860597584,860597599,GB
+860597600,860597759,FR
860597760,860597855,GB
860597856,860597951,FR
860597952,860598015,GB
860598016,860598079,FR
860598080,860598143,GB
-860598144,860601279,FR
+860598144,860598255,FR
+860598256,860598271,GB
+860598272,860601279,FR
860601280,860601295,GB
860601296,860601663,FR
860601664,860601679,ES
-860601680,860609039,FR
+860601680,860601727,FR
+860601728,860601855,ES
+860601856,860602175,FR
+860602176,860602179,DE
+860602180,860602183,PL
+860602184,860602191,FR
+860602192,860602195,IT
+860602196,860602199,PL
+860602200,860602203,FR
+860602204,860602207,GB
+860602208,860602211,IE
+860602212,860602215,BE
+860602216,860602219,ES
+860602220,860602223,FI
+860602224,860608287,FR
+860608288,860608319,CZ
+860608320,860609039,FR
860609040,860609055,NL
860609056,860609607,FR
860609608,860609615,NL
@@ -20116,29 +25298,98 @@
860611808,860611839,FI
860611840,860612815,FR
860612816,860612831,ES
-860612832,860613551,FR
+860612832,860613139,FR
+860613140,860613143,NL
+860613144,860613147,CZ
+860613148,860613151,ES
+860613152,860613183,FR
+860613184,860613187,GB
+860613188,860613191,FR
+860613192,860613195,IE
+860613196,860613551,FR
860613552,860613567,LT
-860613568,860614191,FR
+860613568,860613663,FR
+860613664,860613679,DE
+860613680,860614191,FR
860614192,860614207,ES
860614208,860618751,FR
860618752,860684287,GB
-860684288,860685919,FR
+860684288,860684799,FR
+860684800,860684927,ES
+860684928,860685919,FR
860685920,860685951,FI
-860685952,860687215,FR
+860685952,860686795,FR
+860686796,860686799,ES
+860686800,860687215,FR
860687216,860687231,LT
-860687232,860688431,FR
-860688432,860688447,DE
-860688448,860697599,FR
-860697600,860699135,PL
-860699136,860700671,FR
+860687232,860688463,FR
+860688464,860688479,ES
+860688480,860690647,FR
+860690648,860690651,PT
+860690652,860690687,FR
+860690688,860690703,LT
+860690704,860691967,FR
+860691968,860692095,BE
+860692096,860692495,FR
+860692496,860692511,PL
+860692512,860692543,FR
+860692544,860692607,PL
+860692608,860693007,FR
+860693008,860693023,PL
+860693024,860693055,FR
+860693056,860693183,PL
+860693184,860696895,FR
+860696896,860696959,PL
+860696960,860697023,FR
+860697024,860697151,PL
+860697152,860697279,FR
+860697280,860697343,PL
+860697344,860697599,FR
+860697600,860699647,PL
+860699648,860700095,FR
+860700096,860700159,PL
+860700160,860700543,FR
+860700544,860700607,PL
+860700608,860700671,FR
860700672,860702207,DE
-860702208,860704767,FR
+860702208,860702719,FR
+860702720,860702735,IT
+860702736,860702767,PL
+860702768,860702783,IT
+860702784,860702815,FR
+860702816,860702831,ES
+860702832,860702911,FR
+860702912,860702927,NL
+860702928,860702943,FR
+860702944,860702959,CZ
+860702960,860703023,FR
+860703024,860703039,BE
+860703040,860703151,FR
+860703152,860703167,IT
+860703168,860703215,FR
+860703216,860703231,ES
+860703232,860704767,FR
860704768,860705023,DE
860705024,860705199,FR
860705200,860705215,IT
860705216,860705247,FR
860705248,860705263,GB
-860705264,860705791,FR
+860705264,860705279,FR
+860705280,860705295,IT
+860705296,860705311,FR
+860705312,860705327,IT
+860705328,860705343,NL
+860705344,860705375,FR
+860705376,860705407,DE
+860705408,860705455,FR
+860705456,860705471,NL
+860705472,860705519,FR
+860705520,860705535,PT
+860705536,860705551,IT
+860705552,860705567,ES
+860705568,860705583,BE
+860705584,860705599,IT
+860705600,860705791,FR
860705792,860706047,DE
860706048,860706303,FR
860706304,860706815,DE
@@ -20148,20 +25399,67 @@
860707216,860707231,ES
860707232,860707247,FR
860707248,860707263,PT
-860707264,860707743,FR
+860707264,860707407,FR
+860707408,860707423,PL
+860707424,860707439,IE
+860707440,860707455,FI
+860707456,860707471,FR
+860707472,860707487,CZ
+860707488,860707519,FR
+860707520,860707535,IT
+860707536,860707567,FR
+860707568,860707583,CZ
+860707584,860707743,FR
860707744,860707759,NL
860707760,860707775,DE
860707776,860707807,FR
860707808,860707839,DE
-860707840,860708991,FR
+860707840,860707967,FR
+860707968,860707983,IE
+860707984,860707999,BE
+860708000,860708015,IT
+860708016,860708031,CZ
+860708032,860708079,FR
+860708080,860708111,DE
+860708112,860708223,FR
+860708224,860708239,IE
+860708240,860708255,FR
+860708256,860708271,PT
+860708272,860708303,FR
+860708304,860708319,ES
+860708320,860708383,FR
+860708384,860708399,FI
+860708400,860708479,FR
+860708480,860708495,DE
+860708496,860708515,FR
+860708516,860708523,DE
+860708524,860708991,FR
860708992,860709023,GB
-860709024,860709027,FR
-860709028,860709031,DE
-860709032,860709055,FR
+860709024,860709055,FR
860709056,860709119,GB
860709120,860709503,FR
860709504,860709519,GB
-860709520,860713167,FR
+860709520,860709695,FR
+860709696,860709699,CZ
+860709700,860709967,FR
+860709968,860709999,GB
+860710000,860710015,FR
+860710016,860710031,GB
+860710032,860710079,FR
+860710080,860710143,GB
+860710144,860710399,FR
+860710400,860710431,GB
+860710432,860710591,FR
+860710592,860710719,GB
+860710720,860710783,FR
+860710784,860710863,GB
+860710864,860710879,FR
+860710880,860710895,GB
+860710896,860711359,FR
+860711360,860711423,GB
+860711424,860711679,FR
+860711680,860712959,GB
+860712960,860713167,FR
860713168,860713215,GB
860713216,860713263,FR
860713264,860713279,GB
@@ -20170,16 +25468,18 @@
860713408,860713663,FR
860713664,860713679,GB
860713680,860713695,FR
-860713696,860714495,GB
-860714496,860715007,FR
-860715008,860715071,GB
+860713696,860715071,GB
860715072,860715183,FR
860715184,860715191,GB
860715192,860715247,FR
860715248,860715263,GB
860715264,860715519,FR
860715520,860715647,GB
-860715648,860716159,FR
+860715648,860715935,FR
+860715936,860715951,GB
+860715952,860716095,FR
+860716096,860716111,GB
+860716112,860716159,FR
860716160,860716175,GB
860716176,860716223,FR
860716224,860716319,GB
@@ -20193,15 +25493,44 @@
860716576,860716591,GB
860716592,860716607,FR
860716608,860716799,GB
-860716800,860716903,FR
-860716904,860716911,GB
-860716912,860727163,FR
+860716800,860725571,FR
+860725572,860725575,ES
+860725576,860726143,FR
+860726144,860726159,GB
+860726160,860727163,FR
860727164,860727167,IT
-860727168,860729439,FR
+860727168,860728671,FR
+860728672,860728679,CZ
+860728680,860729439,FR
860729440,860729471,GB
-860729472,860749823,FR
+860729472,860742031,FR
+860742032,860742047,GB
+860742048,860742079,FR
+860742080,860742143,GB
+860742144,860742155,FR
+860742156,860742159,PT
+860742160,860742207,FR
+860742208,860742223,GB
+860742224,860742271,FR
+860742272,860742335,GB
+860742336,860742527,FR
+860742528,860742591,GB
+860742592,860743679,FR
+860743680,860743711,FI
+860743712,860744639,FR
+860744640,860744671,PT
+860744672,860745471,FR
+860745472,860745503,DE
+860745504,860745951,FR
+860745952,860745955,FI
+860745956,860745959,DE
+860745960,860745963,FR
+860745964,860745967,IE
+860745968,860745971,PT
+860745972,860745975,CZ
+860745976,860749823,FR
860749824,860815359,GB
-860815360,860880895,FR
+860815360,860880895,CA
860880896,860905167,GB
860905168,860905171,FR
860905172,860946431,GB
@@ -20216,7 +25545,17 @@
862470144,862502911,IE
862502912,862552063,GB
862552064,862584831,NL
-862584832,864550911,GB
+862584832,862650367,GB
+862650368,862703679,CH
+862703680,862707711,GB
+862707712,862711807,CH
+862711808,863240191,GB
+863240192,863301631,DE
+863301632,863502335,GB
+863502336,863528959,NO
+863528960,863531007,GB
+863531008,863535103,NO
+863535104,864550911,GB
864550912,864649215,NL
864649216,864665599,GB
864665600,864681983,NL
@@ -20333,7 +25672,9 @@
872300064,872300095,FR
872300096,872300127,DE
872300128,872300159,NL
-872300160,872300515,FR
+872300160,872300191,FR
+872300192,872300207,GB
+872300208,872300515,FR
872300516,872300519,DE
872300520,872300543,FR
872300544,872300559,GB
@@ -20345,7 +25686,9 @@
872301088,872301095,ES
872301096,872301503,FR
872301504,872301567,PL
-872301568,872302687,FR
+872301568,872302151,FR
+872302152,872302155,NL
+872302156,872302687,FR
872302688,872302719,NL
872302720,872302783,FR
872302784,872302847,GB
@@ -20371,7 +25714,9 @@
872304392,872304399,CZ
872304400,872304447,FR
872304448,872304511,ES
-872304512,872304831,FR
+872304512,872304527,FR
+872304528,872304543,GB
+872304544,872304831,FR
872304832,872304895,ES
872304896,872305415,FR
872305416,872305423,GB
@@ -20406,7 +25751,9 @@
872311040,872311167,IE
872311168,872311231,FR
872311232,872311295,BE
-872311296,872311903,FR
+872311296,872311395,FR
+872311396,872311399,NL
+872311400,872311903,FR
872311904,872311935,DE
872311936,872311983,FR
872311984,872311999,FI
@@ -20476,7 +25823,9 @@
872326400,872326431,CZ
872326432,872326495,FR
872326496,872326511,BE
-872326512,872326723,FR
+872326512,872326655,FR
+872326656,872326687,GB
+872326688,872326723,FR
872326724,872326727,GB
872326728,872327183,FR
872327184,872327191,IT
@@ -20528,9 +25877,7 @@
872334016,872334031,DE
872334032,872338880,FR
872338881,872338881,BE
-872338882,872341871,FR
-872341872,872341879,GB
-872341880,872341887,FR
+872338882,872341887,FR
872341888,872341903,ES
872341904,872341919,PL
872341920,872342255,FR
@@ -20539,7 +25886,9 @@
872342336,872342367,ES
872342368,872342623,FR
872342624,872342655,DE
-872342656,872343191,FR
+872342656,872342679,FR
+872342680,872342683,CZ
+872342684,872343191,FR
872343192,872343199,ES
872343200,872344423,FR
872344424,872344431,ES
@@ -20572,7 +25921,9 @@
872347064,872347067,PT
872347068,872347151,FR
872347152,872347167,DE
-872347168,872347263,FR
+872347168,872347223,FR
+872347224,872347227,NL
+872347228,872347263,FR
872347264,872347271,CZ
872347272,872347511,FR
872347512,872347519,ES
@@ -20582,9 +25933,13 @@
872348096,872348159,IT
872348160,872348799,FR
872348800,872348863,BE
-872348864,872348959,FR
+872348864,872348951,FR
+872348952,872348955,ES
+872348956,872348959,FR
872348960,872348991,GB
-872348992,872349039,FR
+872348992,872349007,FR
+872349008,872349011,ES
+872349012,872349039,FR
872349040,872349055,IT
872349056,872349983,FR
872349984,872350015,GB
@@ -20625,7 +25980,9 @@
872354752,872354815,BE
872354816,872355071,FR
872355072,872355103,ES
-872355104,872355307,FR
+872355104,872355299,FR
+872355300,872355303,CZ
+872355304,872355307,FR
872355308,872355311,NL
872355312,872355679,FR
872355680,872355711,PT
@@ -20704,7 +26061,9 @@
872378208,872378239,IT
872378240,872378447,FR
872378448,872378463,CZ
-872378464,872379103,FR
+872378464,872378683,FR
+872378684,872378687,GB
+872378688,872379103,FR
872379104,872379135,PL
872379136,872379199,FR
872379200,872379263,DE
@@ -20727,9 +26086,13 @@
872381064,872381071,CZ
872381072,872381151,FR
872381152,872381183,CZ
-872381184,872381343,FR
+872381184,872381215,FR
+872381216,872381231,LT
+872381232,872381343,FR
872381344,872381375,PL
-872381376,872381583,FR
+872381376,872381471,FR
+872381472,872381475,NL
+872381476,872381583,FR
872381584,872381599,DE
872381600,872382143,FR
872382144,872382207,ES
@@ -20762,7 +26125,11 @@
872384156,872384287,FR
872384288,872384319,FI
872384320,872384383,ES
-872384384,872385103,FR
+872384384,872384527,FR
+872384528,872384535,GB
+872384536,872384807,FR
+872384808,872384815,US
+872384816,872385103,FR
872385104,872385119,PL
872385120,872385151,FR
872385152,872385167,LT
@@ -20826,7 +26193,11 @@
872391231,872391231,BE
872391232,872393204,FR
872393205,872393205,BE
-872393206,872403023,FR
+872393206,872402999,FR
+872403000,872403003,PL
+872403004,872403015,FR
+872403016,872403019,PT
+872403020,872403023,FR
872403024,872403039,LT
872403040,872403071,NL
872403072,872403159,FR
@@ -21194,19 +26565,36 @@
878815872,878816127,NL
878816128,878816191,IE
878816192,878816231,NL
-878816232,878816255,US
-878816256,878816383,AT
+878816232,878816383,AT
878816384,878816511,NL
878816512,878816543,FR
-878816544,878821375,US
+878816544,878816807,AT
+878816808,878816815,NL
+878816816,878816823,IE
+878816824,878816863,NL
+878816864,878816895,IE
+878816896,878817023,NL
+878817024,878817151,IE
+878817152,878817351,NL
+878817352,878817359,AT
+878817360,878817367,IE
+878817368,878817375,NL
+878817376,878817407,AT
+878817408,878817535,NL
+878817536,878817663,AT
+878817664,878817823,IE
+878817824,878817855,NL
+878817856,878817919,US
+878817920,878818047,NL
+878818048,878821375,US
878821376,878821695,NL
878821696,878821759,US
878821760,878822655,NL
-878822656,878837759,US
-878837760,878837775,AU
-878837776,878837887,US
-878837888,878839039,AU
-878839040,878841855,US
+878822656,878822911,US
+878822912,878823423,IE
+878823424,878837759,US
+878837760,878839551,AU
+878839552,878841855,US
878841856,878842431,ZA
878842432,878845951,US
878845952,878845983,AE
@@ -21220,7 +26608,17 @@
878846176,878846239,AE
878846240,878846591,SG
878846592,878846623,AE
-878846624,878854143,US
+878846624,878846695,IN
+878846696,878846703,SG
+878846704,878846711,MY
+878846712,878846719,US
+878846720,878847103,IN
+878847104,878847263,SG
+878847264,878847295,HK
+878847296,878847359,US
+878847360,878847487,MY
+878847488,878847615,HK
+878847616,878854143,US
878854144,878854207,JP
878854208,878854399,HK
878854400,878854783,SG
@@ -21257,7 +26655,18 @@
878862976,878863103,SG
878863104,878863359,HK
878863360,878863999,SG
-878864000,878973183,US
+878864000,878903295,US
+878903296,878903391,NL
+878903392,878903615,IE
+878903616,878903711,FI
+878903712,878903807,AT
+878903808,878903823,NL
+878903824,878936063,US
+878936064,878936207,HK
+878936208,878936255,MY
+878936256,878936303,KR
+878936304,878936447,SG
+878936448,878973183,US
878973184,878973695,CA
878973696,879005951,US
879005952,879006463,CA
@@ -21297,24 +26706,36 @@
879200256,879200767,IN
879200768,879201279,US
879201280,879201791,KR
-879201792,879214847,US
+879201792,879202047,SG
+879202048,879202303,US
+879202304,879202815,AE
+879202816,879214847,US
879214848,879215103,KR
879215104,879216639,US
879216640,879217151,IN
879217152,879217663,US
879217664,879218175,KR
-879218176,879230975,US
+879218176,879218431,SG
+879218432,879218687,US
+879218688,879219199,AE
+879219200,879230975,US
879230976,879231231,CA
879231232,879231743,US
879231744,879231999,CA
-879232000,879296511,US
+879232000,879232511,US
+879232512,879233023,BR
+879233024,879296511,US
879296512,879296767,NL
879296768,879297279,IE
879297280,879297535,NL
879297536,879297791,IE
-879297792,879345663,US
+879297792,879298047,US
+879298048,879298559,NL
+879298560,879345663,US
879345664,879346175,IN
-879346176,879499263,US
+879346176,879346687,SG
+879346688,879347199,AE
+879347200,879499263,US
879499264,879501311,NL
879501312,879502335,HK
879502336,879503359,BR
@@ -21327,7 +26748,8 @@
879506432,879506943,FR
879506944,879507455,ZA
879507456,879509503,NL
-879509504,879549951,US
+879509504,879549439,US
+879549440,879549951,ZA
879549952,879550463,FR
879550464,879550975,GB
879550976,879551487,KR
@@ -21397,7 +26819,10 @@
879808768,879808895,IE
879808896,879808959,NL
879808960,879809023,IE
-879809024,879820927,US
+879809024,879814655,US
+879814656,879814911,IE
+879814912,879815167,NL
+879815168,879820927,US
879820928,879821055,HK
879821056,879821311,SG
879821312,879821439,KR
@@ -21556,9 +26981,8 @@
881837312,881837823,US
881837824,881838591,AU
881838592,881838847,AE
-881838848,881839359,US
-881839360,881839611,ZA
-881839612,881840127,US
+881838848,881839871,ZA
+881839872,881840127,US
881840128,881840383,NL
881840384,881840639,IE
881840640,881840895,SG
@@ -21750,10 +27174,7 @@
888136448,888136703,SG
888136704,888137471,US
888137472,888137727,GB
-888137728,888137823,ZA
-888137824,888137855,US
-888137856,888137887,ZA
-888137888,888137983,US
+888137728,888137983,ZA
888137984,888138239,AE
888138240,888139775,US
888139776,888140031,GB
@@ -21794,7 +27215,8 @@
888503296,888504319,NL
888504320,888569855,US
888569856,888573951,HK
-888573952,888578047,US
+888573952,888575999,US
+888576000,888578047,CA
888578048,888586239,JP
888586240,888750079,US
888750080,888758271,IN
@@ -21934,12 +27356,16 @@
908349768,908349775,ES
908349776,908349823,FR
908349824,908349951,GB
-908349952,908350591,FR
+908349952,908350519,FR
+908350520,908350523,NL
+908350524,908350591,FR
908350592,908350623,DE
908350624,908350679,FR
908350680,908350687,ES
908350688,908350719,PT
-908350720,908350751,FR
+908350720,908350723,FR
+908350724,908350727,DE
+908350728,908350751,FR
908350752,908350759,ES
908350760,908350815,FR
908350816,908350847,PT
@@ -21993,15 +27419,19 @@
908363888,908363903,LT
908363904,908363919,FR
908363920,908363927,ES
-908363928,908364063,FR
+908363928,908364031,FR
+908364032,908364035,DE
+908364036,908364063,FR
908364064,908364095,FI
908364096,908364215,FR
908364216,908364223,ES
908364224,908364287,FR
908364288,908364415,ES
908364416,908364431,FR
-908364432,908364439,ES
-908364440,908364799,FR
+908364432,908364443,ES
+908364444,908364555,FR
+908364556,908364559,IT
+908364560,908364799,FR
908364800,908364927,IT
908364928,908364935,FR
908364936,908364943,ES
@@ -22086,7 +27516,9 @@
908381328,908381335,ES
908381336,908381751,FR
908381752,908381759,ES
-908381760,908382143,FR
+908381760,908381779,FR
+908381780,908381783,NL
+908381784,908382143,FR
908382144,908382159,NL
908382160,908382719,FR
908382720,908382751,PL
@@ -22148,7 +27580,9 @@
908388576,908388607,DE
908388608,908388879,FR
908388880,908388887,DE
-908388888,908389055,FR
+908388888,908388927,FR
+908388928,908388943,DE
+908388944,908389055,FR
908389056,908389375,DE
908389376,908389759,FR
908389760,908389823,DE
@@ -22246,8 +27680,8 @@
908418240,908418751,FR
908418752,908418943,DE
908418944,908419327,FR
-908419328,908419455,ES
-908419456,908419495,FR
+908419328,908419459,ES
+908419460,908419495,FR
908419496,908419503,ES
908419504,908419711,FR
908419712,908419719,ES
@@ -22390,9 +27824,18 @@
908440320,908440447,IT
908440448,908441023,FR
908441024,908441055,FI
-908441056,908441311,FR
+908441056,908441063,FR
+908441064,908441067,DE
+908441068,908441071,FR
+908441072,908441075,ES
+908441076,908441079,GB
+908441080,908441083,FR
+908441084,908441087,PL
+908441088,908441311,FR
908441312,908441343,CZ
-908441344,908443263,FR
+908441344,908443003,FR
+908443004,908443007,ES
+908443008,908443263,FR
908443264,908443391,BE
908443392,908443567,FR
908443568,908443583,IT
@@ -22415,7 +27858,8 @@
908445376,908445439,DE
908445440,908445503,FR
908445504,908445567,DE
-908445568,908445631,FR
+908445568,908445583,GB
+908445584,908445631,FR
908445632,908445647,LT
908445648,908445695,FR
908445696,908445823,DE
@@ -22429,7 +27873,9 @@
908446336,908446399,DE
908446400,908446463,FR
908446464,908446527,DE
-908446528,908446591,FR
+908446528,908446567,FR
+908446568,908446575,DE
+908446576,908446591,FR
908446592,908447295,DE
908447296,908447343,FR
908447344,908447351,DE
@@ -22447,7 +27893,9 @@
908448928,908448935,IT
908448936,908450239,FR
908450240,908450271,CZ
-908450272,908453887,FR
+908450272,908450831,FR
+908450832,908450835,NL
+908450836,908453887,FR
908453888,908454911,PL
908454912,908455167,FR
908455168,908455231,PL
@@ -22457,7 +27905,9 @@
908455872,908455935,PL
908455936,908456127,FR
908456128,908456143,GB
-908456144,908456351,FR
+908456144,908456255,FR
+908456256,908456319,GB
+908456320,908456351,FR
908456352,908456463,GB
908456464,908456831,FR
908456832,908457535,GB
@@ -22508,8 +27958,8 @@
908478928,908478959,FR
908478960,908478975,GB
908478976,908479071,FR
-908479072,908479103,GB
-908479104,908479167,FR
+908479072,908479087,GB
+908479088,908479167,FR
908479168,908479295,GB
908479296,908479327,FR
908479328,908479487,GB
@@ -22587,7 +28037,9 @@
908499888,908500991,DE
908500992,908501407,FR
908501408,908501439,CZ
-908501440,908501791,FR
+908501440,908501519,FR
+908501520,908501523,ES
+908501524,908501791,FR
908501792,908501823,CZ
908501824,908502399,FR
908502400,908502527,ES
@@ -22641,8 +28093,7 @@
908515589,908515647,FR
908515648,908515663,PL
908515664,908515679,FR
-908515680,908515695,BE
-908515696,908515711,FR
+908515680,908515711,BE
908515712,908515839,DE
908515840,908516255,FR
908516256,908516271,DE
@@ -22813,7 +28264,9 @@
960626688,960659455,GB
960659456,960662783,DE
960662784,960663039,FR
-960663040,960676607,DE
+960663040,960673791,DE
+960673792,960674047,FR
+960674048,960676607,DE
960676608,960676863,PL
960676864,960692223,DE
960692224,960699935,FR
@@ -22912,7 +28365,7 @@
961757184,961761279,GA
961761280,961765375,GH
961765376,961769471,GN
-961769472,961773567,FR
+961769472,961773567,GW
961773568,961777663,CI
961777664,961781759,KE
961781760,961785855,LS
@@ -22920,7 +28373,8 @@
961789952,961794047,LY
961794048,961798143,MG
961798144,961800191,MW
-961800192,961802239,ML
+961800192,961800447,ML
+961800448,961802239,FR
961802240,961810431,MR
961810432,961814527,MU
961814528,961818623,MA
@@ -22928,7 +28382,7 @@
961822720,961826815,NA
961826816,961830911,NE
961830912,961835007,NG
-961835008,961839103,RW
+961835008,961839103,FR
961839104,961843199,ST
961843200,961847295,SN
961847296,961851391,SC
@@ -23008,8 +28462,7 @@
962310144,962314239,BS
962314240,962318335,TT
962318336,962322431,PR
-962322432,962324479,AW
-962324480,962330623,FR
+962322432,962330623,FR
962330624,962334719,AF
962334720,962338815,BD
962338816,962342911,BT
@@ -23019,7 +28472,7 @@
962355200,962359295,CN
962359296,962363391,IN
962363392,962367487,ID
-962367488,962371583,KZ
+962367488,962371583,FR
962371584,962375679,KG
962375680,962379775,LA
962379776,962383871,MV
@@ -23046,8 +28499,7 @@
962617344,962621439,AU
962621440,962674687,FR
962674688,962676735,BR
-962676736,962678783,CL
-962678784,962680831,FR
+962676736,962680831,FR
962680832,962689023,US
962689024,962723839,FR
962723840,962732031,GB
@@ -23095,7 +28547,9 @@
974913536,974979071,NZ
974979072,975044607,KR
975044608,977272831,CN
-977272832,977305599,TH
+977272832,977284095,TH
+977284096,977284351,HK
+977284352,977305599,TH
977305600,977338367,HK
977338368,977346559,SG
977346560,977354751,JP
@@ -23343,9 +28797,7 @@
1022099456,1022361599,JP
1022361600,1022558207,AU
1022558208,1022623743,IN
-1022623744,1022654463,TW
-1022654464,1022656511,CA
-1022656512,1022722047,TW
+1022623744,1022722047,TW
1022722048,1022754815,CN
1022754816,1022820351,MO
1022820352,1022885887,CN
@@ -23432,15 +28884,15 @@
1024361168,1024361183,HK
1024361184,1024361807,JP
1024361808,1024361823,TW
-1024361824,1024362495,JP
-1024362496,1024363519,SG
-1024363520,1024365727,JP
+1024361824,1024365727,JP
1024365728,1024365759,SG
1024365760,1024368895,JP
1024368896,1024368896,HK
-1024368897,1024372543,JP
+1024368897,1024372479,JP
+1024372480,1024372543,SG
1024372544,1024372639,HK
-1024372640,1024373263,JP
+1024372640,1024372735,SG
+1024372736,1024373263,JP
1024373264,1024373279,HK
1024373280,1024376831,JP
1024376832,1024378879,PH
@@ -23465,7 +28917,8 @@
1025294848,1025295615,AU
1025295616,1025295871,PH
1025295872,1025296127,AU
-1025296128,1025296639,FR
+1025296128,1025296383,FR
+1025296384,1025296639,DE
1025296640,1025299199,AU
1025299200,1025299327,IN
1025299328,1025299455,AU
@@ -23528,9 +28981,7 @@
1026523136,1026539519,CN
1026539520,1026555903,KR
1026555904,1027080191,CN
-1027080192,1027268607,TW
-1027268608,1027276799,CN
-1027276800,1027866623,TW
+1027080192,1027866623,TW
1027866624,1027997695,AU
1027997696,1028128767,TW
1028128768,1029046271,KR
@@ -23558,16 +29009,14 @@
1035993088,1037565951,JP
1037565952,1038614527,TW
1038614528,1039007743,CN
-1039007744,1039102975,HK
-1039102976,1039103231,GB
-1039103232,1039138815,HK
+1039007744,1039138815,HK
1039138816,1039400959,CN
1039400960,1039429631,HK
1039429632,1039429887,GB
1039429888,1039466495,HK
1039466496,1039499263,JP
-1039499264,1039507711,AU
-1039507712,1039511551,LK
+1039499264,1039507455,AU
+1039507456,1039511551,LK
1039511552,1039515647,KR
1039515648,1039523839,JP
1039523840,1039532031,KR
@@ -23603,9 +29052,8 @@
1040477952,1040478207,UA
1040478208,1040482303,CZ
1040482304,1040515071,BE
-1040515072,1040517119,GB
-1040517120,1040518143,SE
-1040518144,1040521215,GB
+1040515072,1040519167,SE
+1040519168,1040521215,GB
1040521216,1040523263,SE
1040523264,1040525311,GB
1040525312,1040526335,SE
@@ -23677,9 +29125,8 @@
1041746432,1041746687,DE
1041746688,1041747711,FR
1041747712,1041747967,GB
-1041747968,1041748047,FR
-1041748048,1041748063,DE
-1041748064,1041748969,FR
+1041747968,1041748479,DE
+1041748480,1041748969,FR
1041748970,1041748970,DE
1041748971,1041752319,FR
1041752320,1041752575,AT
@@ -23712,7 +29159,9 @@
1042294784,1042295551,NL
1042295552,1042296575,GE
1042296576,1042300927,NL
-1042300928,1042309119,RU
+1042300928,1042304511,RU
+1042304512,1042304767,KZ
+1042304768,1042309119,RU
1042309120,1042317311,GB
1042317312,1042350079,ES
1042350080,1042415615,RU
@@ -23763,9 +29212,7 @@
1043595264,1043661567,DE
1043661568,1043661823,GB
1043661824,1043857407,DE
-1043857408,1043896319,GB
-1043896320,1043898367,FR
-1043898368,1043899391,GB
+1043857408,1043899391,GB
1043899392,1043899647,CG
1043899648,1043919442,GB
1043919443,1043919443,SS
@@ -23775,8 +29222,8 @@
1043922944,1043988479,ES
1043988480,1044119551,NL
1044119552,1044152319,GB
-1044152320,1044158463,IR
-1044158464,1044168703,BG
+1044152320,1044160511,IR
+1044160512,1044168703,BG
1044168704,1044172799,IR
1044172800,1044185087,BG
1044185088,1044193279,RU
@@ -23809,18 +29256,14 @@
1044578624,1044578639,DE
1044578640,1044589055,GB
1044589056,1044589311,DE
-1044589312,1044590591,GB
-1044590592,1044590689,DE
+1044589312,1044590689,GB
1044590690,1044590690,FR
-1044590691,1044592639,DE
-1044592640,1044594303,GB
+1044590691,1044594303,GB
1044594304,1044594431,DE
1044594432,1044625407,GB
1044625408,1044627391,RS
1044627392,1044627455,ES
-1044627456,1044636671,GB
-1044636672,1044637695,DE
-1044637696,1044638463,GB
+1044627456,1044638463,GB
1044638464,1044638719,DE
1044638720,1044640767,GB
1044640768,1044642815,DE
@@ -23857,25 +29300,16 @@
1044916736,1044920319,DE
1044920320,1044921343,GB
1044921344,1044922367,US
-1044922368,1044929151,DE
-1044929152,1044929279,CZ
-1044929280,1044930559,DE
-1044930560,1044931583,BE
-1044931584,1044931783,GB
+1044922368,1044930559,DE
+1044930560,1044931783,GB
1044931784,1044931791,BE
-1044931792,1044931951,GB
-1044931952,1044931959,BE
-1044931960,1044932303,GB
+1044931792,1044932303,GB
1044932304,1044932311,BE
-1044932312,1044933499,GB
-1044933500,1044933503,BE
-1044933504,1044935119,GB
+1044932312,1044935119,GB
1044935120,1044935135,BE
1044935136,1044935167,GB
-1044935168,1044936703,BE
-1044936704,1044936735,GB
-1044936736,1044936743,BE
-1044936744,1044937247,GB
+1044935168,1044935679,BE
+1044935680,1044937247,GB
1044937248,1044937255,BE
1044937256,1044938679,GB
1044938680,1044938687,LU
@@ -23903,8 +29337,8 @@
1045162148,1045162151,DE
1045162152,1045168127,FR
1045168128,1045171199,RU
-1045171200,1045171455,UA
-1045171456,1045233663,RU
+1045171200,1045171327,UA
+1045171328,1045233663,RU
1045233664,1045241855,GB
1045241856,1045250047,IT
1045250048,1045266431,CZ
@@ -23997,12 +29431,8 @@
1046484712,1046484719,DE
1046484720,1046486457,GB
1046486458,1046486458,DE
-1046486459,1046487289,GB
-1046487290,1046487290,DE
-1046487291,1046488913,GB
-1046488914,1046488914,DE
-1046488915,1046489087,GB
-1046489088,1046489119,DE
+1046486459,1046487039,GB
+1046487040,1046489119,DE
1046489120,1046489311,GB
1046489312,1046489327,ES
1046489328,1046489391,GB
@@ -24027,13 +29457,9 @@
1046495720,1046495727,DE
1046495728,1046498799,GB
1046498800,1046498807,DE
-1046498808,1046498815,GB
-1046498816,1046502399,DE
-1046502400,1046503095,GB
-1046503096,1046503103,DE
-1046503104,1046503338,GB
-1046503339,1046503339,DE
-1046503340,1046504832,GB
+1046498808,1046499327,GB
+1046499328,1046504447,DE
+1046504448,1046504832,GB
1046504833,1046504838,DE
1046504839,1046504855,GB
1046504856,1046504863,DE
@@ -24041,23 +29467,17 @@
1046506752,1046507007,DE
1046507008,1046507519,GB
1046507520,1046508543,DE
-1046508544,1046512583,GB
-1046512584,1046512591,DE
-1046512592,1046514687,GB
+1046508544,1046514687,GB
1046514688,1046518783,DE
1046518784,1046518911,GB
1046518912,1046518975,DE
-1046518976,1046519295,GB
-1046519296,1046519807,DE
-1046519808,1046524215,GB
+1046518976,1046524215,GB
1046524216,1046524223,DE
1046524224,1046524264,GB
1046524265,1046524265,DE
1046524266,1046524266,GB
1046524267,1046524270,DE
-1046524271,1046524615,GB
-1046524616,1046524623,DE
-1046524624,1046524647,GB
+1046524271,1046524647,GB
1046524648,1046524655,DE
1046524656,1046525351,GB
1046525352,1046525359,DE
@@ -24112,7 +29532,11 @@
1046543360,1046544383,GB
1046544384,1046560767,IT
1046560768,1046585343,ES
-1046585344,1046609919,NO
+1046585344,1046597119,NO
+1046597120,1046597135,AU
+1046597136,1046597143,NO
+1046597144,1046597631,AU
+1046597632,1046609919,NO
1046609920,1046675455,IT
1046675456,1046708223,ES
1046708224,1046740991,AT
@@ -24128,8 +29552,7 @@
1046792449,1046793215,US
1046793216,1046794239,GB
1046794240,1046794495,MX
-1046794496,1046794751,GB
-1046794752,1046795007,US
+1046794496,1046795007,US
1046795008,1046796287,GB
1046796288,1046797311,US
1046797312,1046798335,GB
@@ -24200,158 +29623,47 @@
1047535360,1047535615,BE
1047535616,1047551999,DE
1047552000,1047560191,RU
-1047560192,1047560223,CH
-1047560224,1047560815,DE
+1047560192,1047560815,DE
1047560816,1047560819,KE
-1047560820,1047563287,DE
-1047563288,1047563295,CH
-1047563296,1047563303,DE
-1047563304,1047563311,CH
-1047563312,1047563319,DE
-1047563320,1047563323,CH
-1047563324,1047563351,DE
-1047563352,1047563355,CH
-1047563356,1047563363,DE
-1047563364,1047563367,ES
-1047563368,1047563407,DE
-1047563408,1047563411,CH
-1047563412,1047563415,DE
-1047563416,1047563419,BE
-1047563420,1047563431,DE
+1047560820,1047563431,DE
1047563432,1047563435,CH
-1047563436,1047563455,DE
-1047563456,1047563463,ES
-1047563464,1047563467,DE
-1047563468,1047563471,CH
-1047563472,1047563555,DE
-1047563556,1047563559,CH
-1047563560,1047564551,DE
-1047564552,1047564559,CH
-1047564560,1047565107,DE
-1047565108,1047565111,IT
-1047565112,1047565131,DE
-1047565132,1047565135,GB
-1047565136,1047565279,DE
+1047563436,1047565279,DE
1047565280,1047565311,CH
1047565312,1047565343,DE
1047565344,1047565359,CH
-1047565360,1047565503,DE
-1047565504,1047565507,CZ
-1047565508,1047565839,DE
+1047565360,1047565839,DE
1047565840,1047565887,CH
-1047565888,1047566015,DE
-1047566016,1047566079,CZ
-1047566080,1047566403,DE
-1047566404,1047566415,CH
-1047566416,1047566435,DE
+1047565888,1047566435,DE
1047566436,1047566439,CH
1047566440,1047566451,DE
1047566452,1047566459,CH
-1047566460,1047566475,DE
-1047566476,1047566479,CH
-1047566480,1047566495,DE
-1047566496,1047566499,CH
-1047566500,1047566519,DE
-1047566520,1047566539,CH
-1047566540,1047566543,DE
+1047566460,1047566519,DE
+1047566520,1047566527,CH
+1047566528,1047566531,DE
+1047566532,1047566535,CH
+1047566536,1047566543,DE
1047566544,1047566547,CH
-1047566548,1047566559,DE
-1047566560,1047566563,CH
-1047566564,1047566871,DE
-1047566872,1047566879,CH
-1047566880,1047566891,DE
-1047566892,1047566903,CH
-1047566904,1047566943,DE
-1047566944,1047566947,ES
-1047566948,1047566951,AT
-1047566952,1047566963,DE
-1047566964,1047566967,AT
+1047566548,1047566967,DE
1047566968,1047566971,CH
1047566972,1047567015,DE
1047567016,1047567019,CH
1047567020,1047567027,DE
1047567028,1047567031,CH
-1047567032,1047567039,DE
-1047567040,1047567055,US
-1047567056,1047567063,DE
-1047567064,1047567067,CH
-1047567068,1047567071,DE
-1047567072,1047567075,NL
-1047567076,1047567079,DE
-1047567080,1047567083,NL
-1047567084,1047567135,DE
-1047567136,1047567143,GB
+1047567032,1047567143,DE
1047567144,1047567147,CH
-1047567148,1047567151,BE
+1047567148,1047567151,DE
1047567152,1047567159,CH
-1047567160,1047567163,DE
-1047567164,1047567167,AT
-1047567168,1047567175,CH
-1047567176,1047567211,DE
-1047567212,1047567227,CH
-1047567228,1047567239,DE
-1047567240,1047567243,CH
-1047567244,1047567247,DE
-1047567248,1047567255,CH
-1047567256,1047567283,DE
-1047567284,1047567287,CH
-1047567288,1047567307,DE
-1047567308,1047567311,CH
-1047567312,1047567319,DE
-1047567320,1047567327,CH
-1047567328,1047567343,DE
-1047567344,1047567351,AT
-1047567352,1047567359,DE
+1047567160,1047567359,DE
1047567360,1047567375,CH
-1047567376,1047567447,DE
-1047567448,1047567451,CH
-1047567452,1047567463,DE
-1047567464,1047567471,CH
+1047567376,1047567467,DE
+1047567468,1047567471,CH
1047567472,1047567475,DE
1047567476,1047567483,CH
-1047567484,1047567495,DE
-1047567496,1047567499,CH
-1047567500,1047567535,DE
-1047567536,1047567539,CH
-1047567540,1047567551,DE
-1047567552,1047567555,CH
-1047567556,1047567583,DE
-1047567584,1047567615,CZ
-1047567616,1047567655,DE
-1047567656,1047567659,CH
-1047567660,1047567727,DE
-1047567728,1047567731,BE
-1047567732,1047567735,DE
-1047567736,1047567743,CH
-1047567744,1047567751,DE
-1047567752,1047567755,LU
-1047567756,1047567759,CH
-1047567760,1047567775,DE
-1047567776,1047567807,CH
-1047567808,1047567823,DE
+1047567484,1047567823,DE
1047567824,1047567839,CH
-1047567840,1047567847,DE
-1047567848,1047567851,CH
-1047567852,1047567855,BE
-1047567856,1047567871,DE
-1047567872,1047567875,CH
-1047567876,1047567879,AT
-1047567880,1047567883,CH
-1047567884,1047567903,DE
-1047567904,1047567939,CH
-1047567940,1047567983,DE
-1047567984,1047567999,ES
-1047568000,1047568047,DE
-1047568048,1047568051,CH
-1047568052,1047568055,DE
-1047568056,1047568059,CH
-1047568060,1047568187,DE
-1047568188,1047568191,CH
-1047568192,1047568215,DE
-1047568216,1047568219,CH
-1047568220,1047568259,DE
-1047568260,1047568263,AT
-1047568264,1047568383,DE
+1047567840,1047567903,DE
+1047567904,1047567935,CH
+1047567936,1047568383,DE
1047568384,1047576575,NL
1047576576,1047584767,HU
1047584768,1047592959,NL
@@ -24375,6 +29687,7 @@
1047750192,1047750192,DE
1047750208,1047750208,FR
1047750224,1047750224,PL
+1047750240,1047750271,RU
1047752902,1047752902,AT
1047758474,1047758474,GB
1047758911,1047758911,CZ
@@ -24452,9 +29765,7 @@
1048619008,1048621055,GB
1048621056,1048621056,DE
1048621057,1048625151,US
-1048625152,1048631632,GB
-1048631633,1048631633,IE
-1048631634,1048633343,GB
+1048625152,1048633343,GB
1048633344,1048641535,NO
1048641536,1048649727,FR
1048649728,1048657919,CZ
@@ -24465,9 +29776,7 @@
1048707072,1048772607,GB
1048772608,1048903679,NL
1048903680,1048911871,GB
-1048911872,1048912383,NL
-1048912384,1048912639,JP
-1048912640,1048912895,NL
+1048911872,1048912895,NL
1048912896,1048913919,ES
1048913920,1048914943,NL
1048914944,1048915967,TR
@@ -24505,9 +29814,7 @@
1048992640,1048992703,DE
1048992704,1048992743,GB
1048992744,1048992751,DE
-1048992752,1049008127,GB
-1049008128,1049009151,DE
-1049009152,1049017903,GB
+1048992752,1049017903,GB
1049017904,1049017911,DE
1049017912,1049018367,GB
1049018368,1049022463,DE
@@ -24592,9 +29899,7 @@
1050471032,1050471039,DE
1050471040,1050471167,GB
1050471168,1050673151,DE
-1050673152,1050730495,FR
-1050730496,1050732543,GP
-1050732544,1050804223,FR
+1050673152,1050804223,FR
1050804224,1050869759,MK
1050869760,1050935295,NL
1050938112,1050939135,ES
@@ -24602,7 +29907,7 @@
1050939648,1050940159,MX
1050940160,1050940671,GB
1050940672,1050940927,HK
-1050941184,1050941439,ES
+1050940928,1050941439,ES
1050941440,1050941695,GB
1050941696,1050941951,DE
1050941952,1050942719,US
@@ -24688,6 +29993,8 @@
1052116992,1052119039,RU
1052119040,1052121087,GB
1052121088,1052123135,RU
+1052123136,1052124159,TR
+1052124160,1052125183,FR
1052125184,1052126207,DE
1052126208,1052127231,FR
1052127232,1052129279,RU
@@ -25444,7 +30751,9 @@
1052507648,1052507775,GB
1052507904,1052508415,GB
1052516352,1052704767,GB
-1052704768,1052712959,NL
+1052704768,1052706815,NL
+1052706816,1052708863,GB
+1052708864,1052712959,NL
1052712960,1052770303,GB
1052770304,1052778495,CH
1052778496,1052786687,RU
@@ -25457,6 +30766,14 @@
1052808192,1052809215,EE
1052809216,1052810239,GB
1052810240,1052811263,FR
+1052811264,1052812287,DK
+1052812288,1052813311,NL
+1052813312,1052814335,DE
+1052814336,1052815359,US
+1052815360,1052816383,DE
+1052816384,1052817407,CH
+1052817408,1052818431,GB
+1052818432,1052819455,NL
1052819456,1052827647,DE
1052827648,1052835839,RU
1052835840,1052844031,IR
@@ -25481,12 +30798,11 @@
1053313304,1053313307,GB
1053313496,1053313503,GB
1053313764,1053313767,GB
-1053321216,1053321471,ES
+1053323272,1053323275,DE
1053326556,1053326559,BE
1053329440,1053329471,ES
1053332992,1053334015,BE
1053335552,1053336575,ZA
-1053344256,1053344767,GB
1053350408,1053350415,BE
1053350492,1053350503,BE
1053350508,1053350515,BE
@@ -25515,55 +30831,40 @@
1053671424,1053687807,LV
1053687808,1053753343,DE
1053753344,1053818879,NL
-1053818880,1053819555,GB
+1053818880,1053819391,DE
+1053819392,1053819555,GB
1053819556,1053819559,DE
1053819560,1053820415,GB
1053820416,1053820927,DE
-1053820928,1053824015,GB
-1053824016,1053824023,DE
-1053824024,1053825931,GB
+1053820928,1053825931,GB
1053825932,1053825935,ES
-1053825936,1053826815,GB
-1053826816,1053827071,DE
-1053827072,1053827327,GB
+1053825936,1053827327,GB
1053827328,1053827583,BE
-1053827584,1053831167,GB
-1053831168,1053831423,DE
-1053831424,1053838335,GB
-1053838336,1053838591,DE
-1053838592,1053840447,GB
+1053827584,1053837823,GB
+1053837824,1053838335,FK
+1053838336,1053840447,GB
1053840448,1053840511,DE
-1053840512,1053843215,GB
-1053843216,1053843223,DK
-1053843224,1053843711,GB
+1053840512,1053843711,GB
1053843712,1053843967,DE
1053843968,1053846015,GB
1053846016,1053846527,DE
-1053846528,1053846783,GB
-1053846784,1053847039,DE
-1053847040,1053851903,GB
+1053846528,1053851903,GB
1053851904,1053851919,FR
-1053851920,1053852127,GB
-1053852128,1053852159,DE
-1053852160,1053864703,GB
-1053864704,1053864959,DE
-1053864960,1053865727,GB
+1053851920,1053865727,GB
1053865728,1053865759,US
-1053865760,1053866839,GB
-1053866840,1053866847,DE
-1053866848,1053868351,GB
+1053865760,1053868351,GB
1053868352,1053868383,ES
1053868384,1053868399,GB
1053868400,1053868407,ES
-1053868408,1053868463,GB
+1053868408,1053868415,GB
+1053868416,1053868419,ES
+1053868420,1053868423,GB
+1053868424,1053868431,ES
+1053868432,1053868463,GB
1053868464,1053868479,ES
1053868480,1053870079,GB
1053870080,1053870335,DE
-1053870336,1053873407,GB
-1053873408,1053873663,DE
-1053873664,1053876223,GB
-1053876224,1053876479,DE
-1053876480,1053877247,GB
+1053870336,1053877247,GB
1053877248,1053877503,DE
1053877504,1053877759,GB
1053877760,1053878271,DE
@@ -25571,9 +30872,7 @@
1053878784,1053879039,DE
1053879040,1053880831,GB
1053880832,1053881855,DE
-1053881856,1053882367,GB
-1053882368,1053882879,DE
-1053882880,1053883391,GB
+1053881856,1053883391,GB
1053883392,1053883647,DE
1053883648,1053884159,GB
1053884160,1053884415,DE
@@ -25582,11 +30881,15 @@
1053900800,1053917183,NO
1053917184,1053925375,UZ
1053925376,1053926399,SE
-1053926400,1053926655,GB
+1053926400,1053926495,GB
+1053926496,1053926503,NO
+1053926504,1053926655,GB
1053926656,1053927159,SE
1053927160,1053927199,FI
1053927200,1053933567,SE
-1053933568,1053949951,CZ
+1053933568,1053945855,CZ
+1053945856,1053947903,HU
+1053947904,1053949951,CZ
1053949952,1053968188,FR
1053968189,1053968189,PT
1053968190,1053985279,FR
@@ -25603,17 +30906,15 @@
1054130176,1054138367,LT
1054138368,1054146559,AZ
1054146560,1054179327,RU
-1054179328,1054180351,GB
-1054180352,1054181120,DE
-1054181121,1054181375,GB
-1054181376,1054185216,DE
-1054185217,1054186495,GB
-1054186496,1054187264,DE
-1054187265,1054187519,GB
+1054179328,1054183423,GB
+1054183424,1054185216,DE
+1054185217,1054187519,GB
1054187520,1054195711,FR
1054195712,1054212095,BE
1054212096,1054277631,DE
-1054277632,1054343167,KW
+1054277632,1054335999,KW
+1054336000,1054336255,GB
+1054336256,1054343167,KW
1054343168,1054351359,NL
1054351360,1054359551,UA
1054359552,1054360575,RO
@@ -25645,21 +30946,13 @@
1054646272,1054654463,SE
1054654464,1054662655,MK
1054662656,1054670847,FI
-1054670848,1054671371,GB
-1054671372,1054671375,IE
-1054671376,1054671415,GB
-1054671416,1054671419,IE
-1054671420,1054671431,GB
-1054671432,1054671435,IE
-1054671436,1054672319,GB
+1054670848,1054672319,GB
1054672320,1054672335,US
1054672336,1054672351,GB
1054672352,1054672367,IE
1054672368,1054672775,GB
1054672776,1054672783,IE
-1054672784,1054674687,GB
-1054674688,1054675199,IE
-1054675200,1054675967,GB
+1054672784,1054675967,GB
1054675968,1054676223,US
1054676224,1054679039,GB
1054679040,1054687231,UA
@@ -25670,8 +30963,8 @@
1054728192,1054728447,ES
1054728448,1054728703,IE
1054728704,1054728959,FR
-1054728960,1054730239,NL
-1054730240,1054734335,DE
+1054728960,1054729215,NL
+1054729216,1054734335,DE
1054734336,1054867455,NL
1054867456,1055129599,DE
1055129600,1055195135,CY
@@ -25719,7 +31012,7 @@
1056210944,1056219135,PL
1056219136,1056227327,GB
1056227328,1056243711,TR
-1056243712,1056251903,CH
+1056243712,1056251903,US
1056251904,1056260095,RU
1056260096,1056276479,CZ
1056276480,1056374783,DE
@@ -25751,16 +31044,16 @@
1062262784,1062263039,PH
1062263040,1062530047,US
1062530048,1062531071,EC
-1062531072,1062871551,US
+1062531072,1062625279,US
+1062625280,1062627327,CA
+1062627328,1062871551,US
1062871552,1062872063,PR
1062872064,1063053311,US
1063053312,1063053647,CA
1063053648,1063053663,US
1063053664,1063053743,CA
1063053744,1063053759,US
-1063053760,1063054079,CA
-1063054080,1063054335,US
-1063054336,1063054895,CA
+1063053760,1063054895,CA
1063054896,1063054911,US
1063054912,1063054943,CA
1063054944,1063054959,US
@@ -25769,15 +31062,15 @@
1063055120,1063055167,CA
1063055168,1063055183,US
1063055184,1063055359,CA
-1063055360,1063056383,US
-1063056384,1063057455,CA
+1063055360,1063057407,US
+1063057408,1063057455,CA
1063057456,1063057487,US
1063057488,1063059455,CA
-1063059456,1063748863,US
+1063059456,1063747839,US
+1063747840,1063748095,UG
+1063748096,1063748863,US
1063748864,1063749119,GH
-1063749120,1063817215,US
-1063817216,1063819263,CA
-1063819264,1063895039,US
+1063749120,1063895039,US
1063895040,1063899135,KR
1063899136,1064124927,US
1064124928,1064125439,EC
@@ -25787,9 +31080,11 @@
1064204288,1064205311,MX
1064205312,1064445183,US
1064445184,1064445439,PK
-1064445440,1064785407,US
-1064785408,1064785919,GB
-1064785920,1065371647,US
+1064445440,1064558591,US
+1064558592,1064560639,CA
+1064560640,1064671231,US
+1064671232,1064673279,GB
+1064673280,1065371647,US
1065371648,1065372959,PR
1065372960,1065372991,US
1065372992,1065373695,PR
@@ -25806,9 +31101,7 @@
1065525248,1065526015,US
1065526016,1065526271,GB
1065526272,1065529343,US
-1065529344,1065530879,GB
-1065530880,1065531391,TC
-1065531392,1065537535,GB
+1065529344,1065537535,GB
1065537536,1065539583,US
1065539584,1065539839,GB
1065539840,1065547775,US
@@ -25836,13 +31129,14 @@
1066315776,1066352639,US
1066352640,1066354687,JM
1066354688,1066356735,BB
-1066356736,1066357759,AG
-1066357760,1066358271,JM
-1066358272,1066358783,AG
-1066358784,1066363135,JM
-1066363136,1066363903,PR
-1066363904,1066369023,JM
-1066369024,1066830303,US
+1066356736,1066358271,JM
+1066358272,1066358527,AG
+1066358528,1066363135,JM
+1066363136,1066363391,PR
+1066363392,1066369023,JM
+1066369024,1066620239,US
+1066620240,1066620247,GB
+1066620248,1066830303,US
1066830304,1066830311,SG
1066830312,1066831071,US
1066831072,1066831079,JP
@@ -25852,9 +31146,7 @@
1066831200,1066831215,KR
1066831216,1066831335,US
1066831336,1066831343,JP
-1066831344,1067237887,US
-1067237888,1067238399,JP
-1067238400,1067294719,US
+1066831344,1067294719,US
1067294720,1067294975,CA
1067294976,1067450879,US
1067450880,1067450880,AL
@@ -25937,9 +31229,7 @@
1068346368,1068346879,YE
1068346880,1068419071,US
1068419072,1068421119,CO
-1068421120,1068425983,US
-1068425984,1068426239,EC
-1068426240,1068427158,US
+1068421120,1068427158,US
1068427159,1068427159,AR
1068427160,1068473343,US
1068473344,1068474367,BB
@@ -25989,12 +31279,13 @@
1071382976,1071383039,HK
1071383040,1071477247,US
1071477248,1071480831,CA
-1071480832,1071514981,US
+1071480832,1071513599,US
+1071513600,1071514981,GB
1071514982,1071514982,HK
-1071514983,1071515063,US
-1071515064,1071515067,GB
+1071514983,1071515067,GB
1071515068,1071515071,ES
-1071515072,1071522817,US
+1071515072,1071515647,GB
+1071515648,1071522817,US
1071522818,1071522818,MW
1071522819,1071527567,US
1071527568,1071527583,TW
@@ -26027,9 +31318,7 @@
1072228864,1072229119,CA
1072229120,1072361471,US
1072361472,1072361727,GB
-1072361728,1072923135,US
-1072923136,1072923391,CA
-1072923392,1072925695,US
+1072361728,1072925695,US
1072925696,1072926207,CA
1072926208,1072926719,US
1072926720,1072926975,PH
@@ -26042,9 +31331,7 @@
1072931840,1072932095,CA
1072932096,1072932351,US
1072932352,1072932607,CA
-1072932608,1072934775,US
-1072934776,1072934783,FR
-1072934784,1072935423,US
+1072932608,1072935423,US
1072935424,1072935679,CA
1072935680,1072936191,US
1072936192,1072936447,CA
@@ -26077,14 +31364,15 @@
1073042944,1073043455,US
1073043456,1073043967,PR
1073043968,1073044735,US
-1073044736,1073045503,PR
+1073044736,1073044991,PR
+1073044992,1073045247,US
+1073045248,1073045503,PR
1073045504,1073047551,CO
1073047552,1073048836,US
1073048837,1073048837,CW
1073048838,1073049064,US
1073049065,1073049065,CW
-1073049066,1073049087,US
-1073049088,1073049599,PR
+1073049066,1073049599,US
1073049600,1073052671,BS
1073052672,1073075199,US
1073075200,1073075455,CA
@@ -26175,25 +31463,21 @@
1074397152,1074397159,PR
1074397160,1074397167,VI
1074397168,1074397175,UM
-1074397176,1074397439,US
-1074397440,1074397695,CA
-1074397696,1074398463,US
+1074397176,1074398463,US
1074398464,1074398719,CA
1074398720,1074401023,US
1074401024,1074401535,CA
1074401536,1074401791,US
1074401792,1074402047,CA
1074402048,1074402303,US
-1074402304,1074402815,CA
-1074402816,1074403327,US
+1074402304,1074402559,CA
+1074402560,1074403327,US
1074403328,1074403583,CA
-1074403584,1074405119,US
-1074405120,1074405631,CA
+1074403584,1074405375,US
+1074405376,1074405631,CA
1074405632,1074405887,US
1074405888,1074406143,CA
-1074406144,1074407167,US
-1074407168,1074407423,CA
-1074407424,1074408447,US
+1074406144,1074408447,US
1074408448,1074408703,CA
1074408704,1074408959,US
1074408960,1074409215,CA
@@ -26203,9 +31487,7 @@
1074411520,1074411775,CA
1074411776,1074412031,US
1074412032,1074412287,CA
-1074412288,1074412543,US
-1074412544,1074412799,CA
-1074412800,1074413311,US
+1074412288,1074413311,US
1074413312,1074413567,CA
1074413568,1074414079,US
1074414080,1074414335,CA
@@ -26213,9 +31495,7 @@
1074414592,1074415103,CA
1074415104,1074418687,US
1074418688,1074419199,CA
-1074419200,1074420479,US
-1074420480,1074420735,CA
-1074420736,1074421503,US
+1074419200,1074421503,US
1074421504,1074422271,CA
1074422272,1074422527,US
1074422528,1074423551,CA
@@ -26223,17 +31503,13 @@
1074425600,1074425855,CA
1074425856,1074428415,US
1074428416,1074428671,CA
-1074428672,1074429951,US
-1074429952,1074430207,CA
-1074430208,1074430719,US
+1074428672,1074430719,US
1074430720,1074430975,CA
1074430976,1074435583,US
1074435584,1074435839,CA
1074435840,1074436095,US
1074436096,1074436351,CA
-1074436352,1074436863,US
-1074436864,1074437119,CA
-1074437120,1074438143,US
+1074436352,1074438143,US
1074438144,1074438399,CA
1074438400,1074439423,US
1074439424,1074439679,CA
@@ -26246,8 +31522,8 @@
1074442752,1074445567,US
1074445568,1074445823,CA
1074445824,1074447103,US
-1074447104,1074447615,CA
-1074447616,1074448127,US
+1074447104,1074447359,CA
+1074447360,1074448127,US
1074448128,1074448383,CA
1074448384,1074448895,US
1074448896,1074449151,CA
@@ -26257,15 +31533,11 @@
1074449920,1074450431,CA
1074450432,1074450687,US
1074450688,1074450943,CA
-1074450944,1074451199,US
-1074451200,1074451455,CA
-1074451456,1074451967,US
+1074450944,1074451967,US
1074451968,1074452223,CA
1074452224,1074452991,US
1074452992,1074453247,CA
-1074453248,1074453503,US
-1074453504,1074453759,CA
-1074453760,1074454015,US
+1074453248,1074454015,US
1074454016,1074454271,CA
1074454272,1074454527,US
1074454528,1074455039,CA
@@ -26275,9 +31547,7 @@
1074456064,1074456319,CA
1074456320,1074456831,US
1074456832,1074457087,CA
-1074457088,1074457343,US
-1074457344,1074457599,CA
-1074457600,1074457855,US
+1074457088,1074457855,US
1074457856,1074458111,CA
1074458112,1074458367,US
1074458368,1074458623,CA
@@ -26286,8 +31556,8 @@
1074460416,1074461439,US
1074461440,1074461951,CA
1074461952,1074463999,US
-1074464000,1074464511,CA
-1074464512,1074464767,US
+1074464000,1074464255,CA
+1074464256,1074464767,US
1074464768,1074465535,CA
1074465536,1074465791,US
1074465792,1074466047,CA
@@ -26300,19 +31570,23 @@
1074469120,1074469375,US
1074469376,1074469631,CA
1074469632,1074470399,US
-1074470400,1074471935,CA
-1074471936,1074472703,US
-1074472704,1074473983,CA
+1074470400,1074470655,CA
+1074470656,1074470911,US
+1074470912,1074471935,CA
+1074471936,1074472959,US
+1074472960,1074473983,CA
1074473984,1074474495,US
1074474496,1074474751,CA
1074474752,1074475519,US
-1074475520,1074476031,CA
-1074476032,1074476287,US
+1074475520,1074475775,CA
+1074475776,1074476287,US
1074476288,1074476799,CA
1074476800,1074477311,US
1074477312,1074477567,CA
-1074477568,1074478079,US
-1074478080,1074479871,CA
+1074477568,1074478335,US
+1074478336,1074479359,CA
+1074479360,1074479615,US
+1074479616,1074479871,CA
1074479872,1074480127,US
1074480128,1074480383,CA
1074480384,1074480895,US
@@ -26325,47 +31599,45 @@
1074482944,1074484223,CA
1074484224,1074484735,US
1074484736,1074486527,CA
-1074486528,1074487039,US
-1074487040,1074487551,CA
-1074487552,1074488063,US
-1074488064,1074488319,CA
-1074488320,1074488831,US
+1074486528,1074488831,US
1074488832,1074489087,CA
-1074489088,1074489599,US
-1074489600,1074491391,CA
+1074489088,1074489855,US
+1074489856,1074491391,CA
1074491392,1074491647,US
1074491648,1074492415,CA
1074492416,1074492671,US
1074492672,1074493439,CA
1074493440,1074495999,US
-1074496000,1074496511,CA
-1074496512,1074497535,US
+1074496000,1074496255,CA
+1074496256,1074497535,US
1074497536,1074497791,CA
-1074497792,1074498303,US
-1074498304,1074498815,CA
-1074498816,1074499583,US
-1074499584,1074500351,CA
-1074500352,1074500607,US
+1074497792,1074498559,US
+1074498560,1074498815,CA
+1074498816,1074499839,US
+1074499840,1074500095,CA
+1074500096,1074500607,US
1074500608,1074500863,CA
1074500864,1074502143,US
-1074502144,1074503935,CA
+1074502144,1074502655,CA
+1074502656,1074502911,US
+1074502912,1074503935,CA
1074503936,1074505471,US
1074505472,1074505983,CA
1074505984,1074506239,US
1074506240,1074506495,CA
1074506496,1074507007,US
-1074507008,1074507775,CA
-1074507776,1074508287,US
-1074508288,1074508799,CA
+1074507008,1074507519,CA
+1074507520,1074508543,US
+1074508544,1074508799,CA
1074508800,1074509311,US
1074509312,1074509567,CA
1074509568,1074510079,US
-1074510080,1074510847,CA
-1074510848,1074511103,US
-1074511104,1074512383,CA
-1074512384,1074512639,US
-1074512640,1074513151,CA
-1074513152,1074703615,US
+1074510080,1074510335,CA
+1074510336,1074511615,US
+1074511616,1074512127,CA
+1074512128,1074512639,US
+1074512640,1074512895,CA
+1074512896,1074703615,US
1074703616,1074703871,GB
1074703872,1074704383,US
1074704384,1074704639,GB
@@ -26376,11 +31648,11 @@
1074757632,1074763095,CA
1074763096,1074763103,US
1074763104,1074765823,CA
-1074765824,1074777343,US
-1074777344,1074777599,AU
-1074777600,1074839551,US
+1074765824,1074839551,US
1074839552,1074847743,SA
-1074847744,1074937855,US
+1074847744,1074870271,US
+1074870272,1074872319,CA
+1074872320,1074937855,US
1074937856,1074946047,CA
1074946048,1074954239,US
1074954240,1074958335,PL
@@ -26413,10 +31685,8 @@
1075970048,1075973375,CA
1075973376,1075973631,US
1075973632,1075980287,CA
-1075980288,1075980543,US
-1075980544,1075981567,CA
-1075981568,1075982079,US
-1075982080,1075985151,CA
+1075980288,1075982335,US
+1075982336,1075985151,CA
1075985152,1075985407,US
1075985408,1075992895,CA
1075992896,1075992959,US
@@ -26436,9 +31706,9 @@
1076018766,1076018766,US
1076018767,1076018943,CA
1076018944,1076019199,US
-1076019200,1076021247,CA
-1076021248,1076022783,US
-1076022784,1076023295,CA
+1076019200,1076022271,CA
+1076022272,1076023039,US
+1076023040,1076023295,CA
1076023296,1076025855,US
1076025856,1076025951,CA
1076025952,1076025999,US
@@ -26476,9 +31746,7 @@
1076046848,1076047103,CA
1076047104,1076049151,US
1076049152,1076049407,DE
-1076049408,1076049919,US
-1076049920,1076050175,IL
-1076050176,1076174847,US
+1076049408,1076174847,US
1076174848,1076178943,BM
1076178944,1076183231,US
1076183232,1076183295,CA
@@ -26513,7 +31781,9 @@
1076198656,1076198911,AE
1076198912,1076283903,US
1076283904,1076284159,NO
-1076284160,1076302439,US
+1076284160,1076293535,US
+1076293536,1076293567,MT
+1076293568,1076302439,US
1076302440,1076302447,CA
1076302448,1076304151,US
1076304152,1076304159,CA
@@ -26532,7 +31802,13 @@
1076400128,1076404223,DE
1076404224,1076408319,US
1076408320,1076412415,CA
-1076412416,1076424703,US
+1076412416,1076420607,US
+1076420608,1076421667,GB
+1076421668,1076421668,US
+1076421669,1076422192,GB
+1076422193,1076422193,US
+1076422194,1076422655,GB
+1076422656,1076424703,US
1076424704,1076428799,CA
1076428800,1076543487,US
1076543488,1076559871,CA
@@ -26548,16 +31824,10 @@
1076756480,1076772863,CA
1076772864,1076823009,US
1076823010,1076823011,CR
-1076823012,1076841479,US
-1076841480,1076841487,PR
-1076841488,1076850687,US
-1076850688,1076851711,CA
-1076851712,1076855044,US
+1076823012,1076855044,US
1076855045,1076855045,MX
1076855046,1076857855,US
-1076857856,1076858057,PR
-1076858058,1076858059,US
-1076858060,1076858111,PR
+1076857856,1076858111,PR
1076858112,1076879505,US
1076879506,1076879507,CA
1076879508,1076880639,US
@@ -26659,9 +31929,7 @@
1078429696,1078429951,GR
1078429952,1078433631,US
1078433632,1078433663,CN
-1078433664,1078436607,US
-1078436608,1078436735,CA
-1078436736,1078438399,US
+1078433664,1078438399,US
1078438400,1078438655,CA
1078438656,1078438911,US
1078438912,1078438929,CN
@@ -26681,14 +31949,19 @@
1078517760,1078525951,CA
1078525952,1078594815,US
1078594816,1078594943,HK
-1078594944,1078722559,US
+1078594944,1078656511,US
+1078656512,1078656767,CA
+1078656768,1078722559,US
1078722560,1078734847,AR
1078734848,1078737919,CO
1078737920,1078738943,EC
1078738944,1078739455,VE
1078739456,1078739967,US
1078739968,1078743039,PE
-1078743040,1078746111,CO
+1078743040,1078745087,CO
+1078745088,1078745599,US
+1078745600,1078745855,CO
+1078745856,1078746111,US
1078746112,1078747135,PE
1078747136,1078749183,CL
1078749184,1078751231,PE
@@ -26756,9 +32029,9 @@
1079384064,1079384319,US
1079384320,1079384575,CA
1079384576,1079385087,ZW
-1079385088,1079385599,US
-1079385600,1079386623,CA
-1079386624,1079388159,US
+1079385088,1079385855,US
+1079385856,1079386367,CA
+1079386368,1079388159,US
1079388160,1079389183,CA
1079389184,1079392255,US
1079392256,1079393791,CA
@@ -26809,7 +32082,9 @@
1079861248,1079865343,CA
1079865344,1079917055,US
1079917056,1079917311,KY
-1079917312,1079962879,US
+1079917312,1079917823,US
+1079917824,1079918079,KY
+1079918080,1079962879,US
1079962880,1079963135,GB
1079963136,1079992319,US
1079992320,1079993343,NL
@@ -26864,7 +32139,7 @@
1080960256,1080960511,BH
1080960512,1080963839,DE
1080963840,1080967167,US
-1080967168,1080983551,DE
+1080967168,1080983551,CH
1080983552,1080987647,US
1080987648,1080988671,DE
1080988672,1080989183,AI
@@ -26879,9 +32154,7 @@
1081040896,1081129983,US
1081129984,1081130495,CA
1081130496,1081212927,US
-1081212928,1081263103,CA
-1081263104,1081263359,US
-1081263360,1081278463,CA
+1081212928,1081278463,CA
1081278464,1081377663,US
1081377664,1081377791,VE
1081377792,1081385215,US
@@ -26890,7 +32163,8 @@
1081387520,1081387775,PA
1081387776,1081391103,US
1081391104,1081393151,PA
-1081393152,1081397247,CL
+1081393152,1081394687,US
+1081394688,1081397247,CL
1081397248,1081397759,US
1081397760,1081398783,CL
1081398784,1081399295,US
@@ -26947,9 +32221,7 @@
1082787162,1082787162,SG
1082787163,1082788655,US
1082788656,1082788663,SG
-1082788664,1082789887,US
-1082789888,1082791935,AU
-1082791936,1082945535,US
+1082788664,1082945535,US
1082945536,1082949631,CA
1082949632,1082982399,US
1082982400,1083015167,CA
@@ -26996,8 +32268,7 @@
1086074880,1086267391,US
1086267392,1086271487,CA
1086271488,1086421503,US
-1086421504,1086421887,GU
-1086421888,1086422015,MP
+1086421504,1086422015,MP
1086422016,1086922751,US
1086922752,1086930943,CA
1086930944,1086955519,US
@@ -27014,35 +32285,31 @@
1087364352,1087364607,CA
1087364608,1087375203,US
1087375204,1087375207,GB
-1087375208,1087405407,US
+1087375208,1087383767,US
+1087383768,1087383783,MX
+1087383784,1087383791,US
+1087383792,1087383799,PR
+1087383800,1087405407,US
1087405408,1087405423,MX
1087405424,1087413879,US
1087413880,1087413883,ES
1087413884,1087413895,US
1087413896,1087413903,DE
-1087413904,1087416767,US
+1087413904,1087414831,US
+1087414832,1087414839,CA
+1087414840,1087416767,US
1087416768,1087416831,CA
1087416832,1087416985,US
1087416986,1087416986,GB
-1087416987,1087418367,US
-1087418368,1087419391,GB
-1087419392,1087430191,US
+1087416987,1087430191,US
1087430192,1087430195,FR
1087430196,1087436799,US
1087436800,1087438847,FR
1087438848,1087442323,US
1087442324,1087442327,MX
-1087442328,1087444223,US
-1087444224,1087444479,GB
-1087444480,1087465471,US
-1087465472,1087466688,CA
-1087466689,1087466689,US
-1087466690,1087466709,CA
-1087466710,1087466710,US
-1087466711,1087466883,CA
+1087442328,1087466883,US
1087466884,1087466887,GB
-1087466888,1087467519,CA
-1087467520,1087501471,US
+1087466888,1087501471,US
1087501472,1087501479,HK
1087501480,1087501535,US
1087501536,1087501695,HK
@@ -27080,7 +32347,9 @@
1087591238,1087591238,FR
1087591239,1087613115,US
1087613116,1087613119,FR
-1087613120,1087686655,US
+1087613120,1087664447,US
+1087664448,1087664455,CR
+1087664456,1087686655,US
1087686656,1087686911,PR
1087686912,1087693151,US
1087693152,1087693155,GB
@@ -27092,33 +32361,35 @@
1087715328,1087717375,PA
1087717376,1087726015,US
1087726016,1087726047,FR
-1087726048,1087743487,US
-1087743488,1087743569,FR
+1087726048,1087741951,US
+1087741952,1087743569,FR
1087743570,1087743570,GB
1087743571,1087743597,FR
1087743598,1087743598,US
-1087743599,1087743615,FR
-1087743616,1087743743,US
-1087743744,1087743999,GB
+1087743599,1087743999,FR
1087744000,1087758335,US
1087758336,1087766527,PR
-1087766528,1087781887,US
-1087781888,1087782143,GB
-1087782144,1087798943,US
+1087766528,1087798943,US
1087798944,1087798975,CA
1087798976,1087821567,US
1087821568,1087821823,GB
-1087821824,1087837359,US
+1087821824,1087824611,US
+1087824612,1087824615,SG
+1087824616,1087833359,US
+1087833360,1087833383,MX
+1087833384,1087837359,US
1087837360,1087837367,BR
1087837368,1087837695,US
1087837696,1087837951,BR
-1087837952,1087860735,US
+1087837952,1087852671,US
+1087852672,1087852675,SG
+1087852676,1087860735,US
1087860736,1087860991,GB
-1087860992,1087861279,US
-1087861280,1087861311,GB
-1087861312,1087862783,US
-1087862784,1087864831,PA
-1087864832,1087873023,US
+1087860992,1087861503,US
+1087861504,1087861629,CA
+1087861630,1087861630,US
+1087861631,1087861759,CA
+1087861760,1087873023,US
1087873024,1087873535,CA
1087873536,1087879403,US
1087879404,1087879407,GB
@@ -27280,8 +32551,17 @@
1089339392,1089404927,US
1089404928,1089437695,CA
1089437696,1089462271,US
-1089462272,1089465343,CA
-1089465344,1089961983,US
+1089462272,1089462394,CA
+1089462395,1089462395,US
+1089462396,1089462411,CA
+1089462412,1089462412,US
+1089462413,1089462436,CA
+1089462437,1089462437,US
+1089462438,1089462527,CA
+1089462528,1089462783,US
+1089462784,1089465343,CA
+1089465344,1089466367,GB
+1089466368,1089961983,US
1089961984,1089970175,CA
1089970176,1089974271,PR
1089974272,1090146303,US
@@ -27302,9 +32582,7 @@
1090427392,1090427647,CA
1090427648,1090445311,US
1090445312,1090453503,CA
-1090453504,1090497903,US
-1090497904,1090497919,AU
-1090497920,1091727359,US
+1090453504,1091727359,US
1091727360,1091731455,MM
1091731456,1091747839,CH
1091747840,1091751935,US
@@ -27337,9 +32615,7 @@
1093110841,1093110843,US
1093110844,1093113783,CA
1093113784,1093113791,US
-1093113792,1093118207,CA
-1093118208,1093118463,HK
-1093118464,1093120511,CA
+1093113792,1093120511,CA
1093120512,1093120767,GB
1093120768,1093127270,CA
1093127271,1093127271,US
@@ -27370,11 +32646,9 @@
1093732439,1093732439,CA
1093732440,1093732537,US
1093732538,1093732538,CA
-1093732539,1093733375,US
-1093733376,1093734053,CN
+1093732539,1093734053,US
1093734054,1093734054,PH
-1093734055,1093734399,CN
-1093734400,1093767167,US
+1093734055,1093767167,US
1093767168,1093767679,HK
1093767680,1093768703,US
1093768704,1093769215,HK
@@ -27447,30 +32721,14 @@
1096548352,1096810495,CA
1096810496,1096884223,US
1096884224,1096888319,CA
-1096888320,1096890879,US
-1096890880,1096891135,GB
-1096891136,1096925183,US
+1096888320,1096925183,US
1096925184,1096941567,CA
1096941568,1097007103,US
-1097007104,1097008127,JP
-1097008128,1097008255,IT
-1097008256,1097013503,JP
-1097013504,1097013759,IT
-1097013760,1097014015,JP
+1097007104,1097014015,JP
1097014016,1097014271,IT
-1097014272,1097016063,JP
-1097016064,1097016319,IT
-1097016320,1097016575,JP
-1097016576,1097016831,IT
-1097016832,1097017343,JP
-1097017344,1097017599,IT
-1097017600,1097019391,JP
-1097019392,1097019647,IT
-1097019648,1097024511,JP
-1097024512,1097024767,IT
-1097024768,1097026303,JP
-1097026304,1097026559,IT
-1097026560,1097031679,JP
+1097014272,1097017855,JP
+1097017856,1097018111,IT
+1097018112,1097031679,JP
1097031680,1097039871,US
1097039872,1097056255,SE
1097056256,1097076123,US
@@ -27487,7 +32745,9 @@
1097830400,1097834495,CA
1097834496,1097896191,US
1097896192,1097897215,VI
-1097897216,1097947135,US
+1097897216,1097909503,US
+1097909504,1097909759,CA
+1097909760,1097947135,US
1097947136,1097949183,VI
1097949184,1097951231,US
1097951232,1097953279,VI
@@ -27501,9 +32761,7 @@
1098096288,1098096295,BR
1098096296,1098178383,US
1098178384,1098178391,CA
-1098178392,1098507263,US
-1098507264,1098507519,CA
-1098507520,1098891623,US
+1098178392,1098891623,US
1098891624,1098891631,AU
1098891632,1098892255,US
1098892256,1098892263,AU
@@ -27559,9 +32817,7 @@
1101729356,1101729356,LB
1101729357,1101750783,US
1101750784,1101751295,BM
-1101751296,1101767679,US
-1101767680,1101767935,CW
-1101767936,1101803519,US
+1101751296,1101803519,US
1101803520,1101804543,HN
1101804544,1101857247,US
1101857248,1101857248,MA
@@ -27606,15 +32862,13 @@
1105561600,1105562111,SE
1105562112,1105719295,US
1105719296,1105723391,IN
-1105723392,1106422271,US
-1106422272,1106422527,GB
-1106422528,1106469887,US
+1105723392,1106469887,US
1106469888,1106470911,BS
1106470912,1106475007,US
1106475008,1106475519,CO
-1106475520,1106759167,US
-1106759168,1106759679,CO
-1106759680,1106767871,US
+1106475520,1106740991,US
+1106740992,1106741247,CR
+1106741248,1106767871,US
1106767872,1106769919,CO
1106769920,1107240191,US
1107240192,1107240959,CN
@@ -27689,9 +32943,7 @@
1109929984,1109930239,US
1109930240,1109931007,CA
1109931008,1109931263,US
-1109931264,1109931775,CA
-1109931776,1109932031,US
-1109932032,1109934591,CA
+1109931264,1109934591,CA
1109934592,1109934847,GB
1109934848,1109938175,CA
1109938176,1109950463,US
@@ -27730,17 +32982,15 @@
1110462272,1110462335,CA
1110462336,1110462847,US
1110462848,1110463103,CA
-1110463104,1110465023,US
-1110465024,1110465279,CA
-1110465280,1110473983,US
+1110463104,1110473983,US
1110473984,1110474239,CA
1110474240,1110540287,US
1110540288,1110573055,CA
-1110573056,1110579775,PR
-1110579776,1110579967,US
-1110579968,1110580095,PR
-1110580096,1110580127,US
-1110580128,1110589439,PR
+1110573056,1110579711,PR
+1110579712,1110579967,US
+1110579968,1110580099,PR
+1110580100,1110580103,US
+1110580104,1110589439,PR
1110589440,1110591487,US
1110591488,1110595583,PR
1110595584,1110595776,US
@@ -27848,13 +33098,9 @@
1113597184,1113597439,US
1113597440,1113597695,PE
1113597696,1113598463,PA
-1113598464,1113599487,US
-1113599488,1113599999,VE
-1113600000,1113600255,US
-1113600256,1113600511,VE
-1113600512,1113601023,US
-1113601024,1113603071,VE
-1113603072,1113603327,US
+1113598464,1113601023,US
+1113601024,1113602047,VE
+1113602048,1113603327,US
1113603328,1113603583,GT
1113603584,1113603839,US
1113603840,1113604095,CA
@@ -27987,9 +33233,7 @@
1114506752,1114507263,CA
1114507264,1114509567,US
1114509568,1114509571,MX
-1114509572,1114511871,US
-1114511872,1114512127,CA
-1114512128,1114515463,US
+1114509572,1114515463,US
1114515464,1114515471,CA
1114515472,1114517503,US
1114517504,1114518015,CA
@@ -28005,9 +33249,7 @@
1114537984,1114550271,CA
1114550272,1114578943,US
1114578944,1114583039,CA
-1114583040,1114584153,US
-1114584154,1114584163,GR
-1114584164,1114588671,US
+1114583040,1114588671,US
1114588672,1114589695,CA
1114589696,1114590975,US
1114590976,1114595327,CA
@@ -28121,8 +33363,8 @@
1117454592,1117454847,US
1117454848,1117455619,CA
1117455620,1117455620,DE
-1117455621,1117456895,CA
-1117456896,1117457919,US
+1117455621,1117456383,CA
+1117456384,1117457919,US
1117457920,1117458751,CA
1117458752,1117458815,GB
1117458816,1117458911,CA
@@ -28145,9 +33387,11 @@
1117478604,1117478604,DE
1117478605,1117478610,CA
1117478611,1117478611,DE
-1117478612,1117481471,CA
-1117481472,1117481727,US
-1117481728,1117487103,CA
+1117478612,1117481343,CA
+1117481344,1117481407,US
+1117481408,1117481471,CA
+1117481472,1117481983,US
+1117481984,1117487103,CA
1117487104,1117683711,US
1117683712,1117691903,CA
1117691904,1117724671,US
@@ -28208,9 +33452,7 @@
1118535680,1118539775,CA
1118539776,1118543871,US
1118543872,1118547967,CA
-1118547968,1118790655,US
-1118790656,1118790911,IL
-1118790912,1118794319,US
+1118547968,1118794319,US
1118794320,1118794335,LU
1118794336,1118962943,US
1118962944,1118963199,AS
@@ -28291,9 +33533,7 @@
1120317440,1120346111,US
1120346112,1120350207,CA
1120350208,1120370687,US
-1120370688,1120371711,CA
-1120371712,1120371967,US
-1120371968,1120372479,CA
+1120370688,1120372479,CA
1120372480,1120372735,US
1120372736,1120378367,CA
1120378368,1120378623,US
@@ -28342,7 +33582,29 @@
1120498944,1120499199,CA
1120499200,1120509951,US
1120509952,1120516095,SV
-1120516096,1120518143,US
+1120516096,1120516493,US
+1120516494,1120516495,BR
+1120516496,1120516499,US
+1120516500,1120516500,BR
+1120516501,1120516501,US
+1120516502,1120516503,BR
+1120516504,1120516509,US
+1120516510,1120516511,BR
+1120516512,1120516515,US
+1120516516,1120516519,BR
+1120516520,1120516523,US
+1120516524,1120516527,BR
+1120516528,1120516531,US
+1120516532,1120516534,BR
+1120516535,1120516539,US
+1120516540,1120516540,BR
+1120516541,1120516558,US
+1120516559,1120516559,BR
+1120516560,1120516564,US
+1120516565,1120516566,BR
+1120516567,1120517375,US
+1120517376,1120517631,AR
+1120517632,1120518143,US
1120518144,1120534527,CA
1120534528,1120636927,US
1120636928,1120641023,HK
@@ -28351,9 +33613,7 @@
1120740352,1120741375,TT
1120741376,1120741631,US
1120741632,1120741887,KN
-1120741888,1120744447,US
-1120744448,1120744703,KN
-1120744704,1120826367,US
+1120741888,1120826367,US
1120826368,1120826370,CA
1120826371,1120826371,US
1120826372,1120826623,CA
@@ -28365,7 +33625,9 @@
1120886784,1120894975,CA
1120894976,1120911359,US
1120911360,1120919551,CA
-1120919552,1121005567,US
+1120919552,1120956415,US
+1120956416,1120957951,MX
+1120957952,1121005567,US
1121005568,1121009663,CA
1121009664,1121038335,US
1121038336,1121042431,CA
@@ -28378,9 +33640,7 @@
1121230848,1121239039,CA
1121239040,1121249279,US
1121249280,1121251327,CA
-1121251328,1121252863,US
-1121252864,1121253119,BZ
-1121253120,1121254159,US
+1121251328,1121254159,US
1121254160,1121254167,CA
1121254168,1121763327,US
1121763328,1121767423,CA
@@ -28388,9 +33648,7 @@
1121878016,1121910783,CA
1121910784,1122074623,US
1122074624,1122091007,CA
-1122091008,1122092799,US
-1122092800,1122093055,CA
-1122093056,1122140159,US
+1122091008,1122140159,US
1122140160,1122148351,CA
1122148352,1122156543,BS
1122156544,1122238463,US
@@ -28437,9 +33695,7 @@
1123395808,1123395839,CA
1123395840,1123534847,US
1123534848,1123536895,AW
-1123536896,1123589631,US
-1123589632,1123589887,DE
-1123589888,1123590143,US
+1123536896,1123590143,US
1123590144,1123598335,VI
1123598336,1123600383,CA
1123600384,1123600895,US
@@ -28511,9 +33767,7 @@
1123974144,1123974399,NL
1123974400,1125064703,US
1125064704,1125065215,GB
-1125065216,1125082367,US
-1125082368,1125082623,DE
-1125082624,1125087999,US
+1125065216,1125087999,US
1125088000,1125088255,CA
1125088256,1125099775,US
1125099776,1125100031,GB
@@ -28537,9 +33791,7 @@
1125251072,1125253119,VE
1125253120,1125474303,US
1125474304,1125478399,CA
-1125478400,1125481471,US
-1125481472,1125481727,CA
-1125481728,1125486591,US
+1125478400,1125486591,US
1125486592,1125490687,CA
1125490688,1125498879,US
1125498880,1125514495,CA
@@ -28563,30 +33815,24 @@
1126924288,1126928383,CA
1126928384,1126948863,US
1126948864,1126952959,CA
-1126952960,1127315967,US
-1127315968,1127315983,GU
-1127315984,1127514623,US
-1127514624,1127515109,MX
-1127515110,1127515110,US
-1127515111,1127515135,MX
-1127515136,1127677951,US
+1126952960,1127677951,US
1127677952,1127694335,CA
1127694336,1127923711,US
1127923712,1127931903,CA
-1127931904,1128529919,US
+1127931904,1128056319,US
+1128056320,1128056575,PR
+1128056576,1128529919,US
1128529920,1128641023,CA
1128641024,1128641535,US
1128641536,1128792063,CA
1128792064,1128817407,US
1128817408,1128817663,NL
-1128817664,1130535935,US
+1128817664,1128992495,US
+1128992496,1128992511,CA
+1128992512,1130535935,US
1130535936,1130536191,FR
1130536192,1130536959,US
-1130536960,1130537471,GU
-1130537472,1130537626,US
-1130537627,1130537627,GU
-1130537628,1130537727,US
-1130537728,1130539007,GU
+1130536960,1130539007,GU
1130539008,1133461247,US
1133461248,1133461503,CA
1133461504,1133785351,US
@@ -28623,9 +33869,7 @@
1137442816,1137491967,US
1137491968,1137508351,CA
1137508352,1137524735,US
-1137524736,1137529719,CA
-1137529720,1137529727,US
-1137529728,1137530943,CA
+1137524736,1137530943,CA
1137530944,1137530951,AE
1137530952,1137541119,CA
1137541120,1137623039,US
@@ -28673,9 +33917,7 @@
1137954816,1137963007,US
1137963008,1137967103,VI
1137967104,1137983487,US
-1137983488,1137985695,CA
-1137985696,1137985727,US
-1137985728,1137991679,CA
+1137983488,1137991679,CA
1137991680,1138049023,US
1138049024,1138061311,CA
1138061312,1138062847,US
@@ -28707,13 +33949,9 @@
1138212864,1138216959,CA
1138216960,1138237439,US
1138237440,1138245631,CA
-1138245632,1138303551,US
-1138303552,1138303583,MX
-1138303584,1138374015,US
-1138374016,1138374079,AS
-1138374080,1138374399,US
-1138374400,1138375167,AS
-1138375168,1138375423,US
+1138245632,1138374399,US
+1138374400,1138374655,AS
+1138374656,1138375423,US
1138375424,1138375679,AS
1138375680,1138415871,US
1138415872,1138416127,CA
@@ -28726,10 +33964,8 @@
1138474240,1138475007,CA
1138475008,1138499583,US
1138499584,1138503679,CA
-1138503680,1138507775,US
-1138507776,1138508543,CA
-1138508544,1138508799,US
-1138508800,1138515967,CA
+1138503680,1138511871,US
+1138511872,1138515967,CA
1138515968,1138528255,US
1138528256,1138528511,CA
1138528512,1138544895,US
@@ -29021,7 +34257,9 @@
1158441984,1158443007,DM
1158443008,1158774783,US
1158774784,1158791167,CA
-1158791168,1158799359,BM
+1158791168,1158794239,BM
+1158794240,1158794495,US
+1158794496,1158799359,BM
1158799360,1158807551,CA
1158807552,1158951575,US
1158951576,1158951583,CA
@@ -29075,7 +34313,9 @@
1159700480,1159725055,CA
1159725056,1160011775,US
1160011776,1160019967,CA
-1160019968,1160364031,US
+1160019968,1160329215,US
+1160329216,1160331263,RO
+1160331264,1160364031,US
1160364032,1160368127,CA
1160368128,1160373247,US
1160373248,1160373503,AE
@@ -29099,9 +34339,7 @@
1160665600,1160665855,CH
1160665856,1160667135,US
1160667136,1160675327,CA
-1160675328,1160678399,US
-1160678400,1160678655,MX
-1160678656,1160681727,US
+1160675328,1160681727,US
1160681728,1160681983,SG
1160681984,1160683519,US
1160683520,1160691711,CA
@@ -29128,7 +34366,9 @@
1161019392,1161035775,CA
1161035776,1161052671,US
1161052672,1161052927,GB
-1161052928,1161163263,US
+1161052928,1161070335,US
+1161070336,1161070591,HK
+1161070592,1161163263,US
1161163264,1161163519,NL
1161163520,1161293823,US
1161293824,1161297919,CA
@@ -29154,8 +34394,8 @@
1161425408,1161425663,AG
1161425664,1161425919,AI
1161425920,1161426943,AG
-1161426944,1161427199,AI
-1161427200,1161428223,AG
+1161426944,1161427967,AI
+1161427968,1161428223,AG
1161428224,1161428991,KN
1161428992,1161429023,CA
1161429024,1161429031,US
@@ -29220,7 +34460,9 @@
1161430912,1161430943,CA
1161430944,1161431007,US
1161431008,1161431039,CA
-1161431040,1161432063,US
+1161431040,1161431807,US
+1161431808,1161431871,CA
+1161431872,1161432063,US
1161432064,1161432479,CA
1161432480,1161432575,US
1161432576,1161432831,CA
@@ -29269,9 +34511,7 @@
1161887024,1161887055,NO
1161887056,1161887231,US
1161887232,1161887743,AU
-1161887744,1161925631,US
-1161925632,1161925887,EC
-1161925888,1162018815,US
+1161887744,1162018815,US
1162018816,1162022911,CA
1162022912,1162027007,US
1162027008,1162031103,ZA
@@ -29328,8 +34568,7 @@
1162862592,1162863103,PR
1162863104,1162870783,US
1162870784,1162871295,BB
-1162871296,1162879487,LC
-1162879488,1162879999,BB
+1162871296,1162879999,LC
1162880000,1162882559,DM
1162882560,1162883839,GD
1162883840,1162884863,BB
@@ -29350,9 +34589,7 @@
1163407360,1163411455,CA
1163411456,1163469823,US
1163469824,1163470335,PR
-1163470336,1163470847,US
-1163470848,1163472895,PR
-1163472896,1163479295,US
+1163470336,1163479295,US
1163479296,1163479551,CA
1163479552,1163526143,US
1163526144,1163529215,CA
@@ -29367,11 +34604,7 @@
1163556864,1163557119,US
1163557120,1163566591,CA
1163566592,1163567103,US
-1163567104,1163569407,CA
-1163569408,1163569663,US
-1163569664,1163570943,CA
-1163570944,1163571199,US
-1163571200,1163573343,CA
+1163567104,1163573343,CA
1163573344,1163573375,US
1163573376,1163573439,CA
1163573440,1163573503,IN
@@ -29406,19 +34639,22 @@
1163586304,1163586559,US
1163586560,1163589631,CA
1163589632,1163590143,US
-1163590144,1163591679,CA
+1163590144,1163590911,CA
+1163590912,1163591167,US
+1163591168,1163591679,CA
1163591680,1163808767,US
1163808768,1163812863,MV
-1163812864,1163816959,HK
+1163812864,1163813119,HK
+1163813120,1163813375,TH
+1163813376,1163813631,PH
+1163813632,1163816959,HK
1163816960,1163821055,CY
1163821056,1167851519,US
1167851520,1168113663,CA
1168113664,1168121855,MM
1168121856,1168138239,US
1168138240,1168146431,JM
-1168146432,1168156671,US
-1168156672,1168158719,HK
-1168158720,1168211967,US
+1168146432,1168211967,US
1168211968,1168220159,CA
1168220160,1168228863,US
1168228864,1168229119,AU
@@ -29515,9 +34751,7 @@
1169035267,1169037311,DE
1169037312,1169040895,US
1169040896,1169041407,CA
-1169041408,1169041535,US
-1169041536,1169041663,CA
-1169041664,1169042719,US
+1169041408,1169042719,US
1169042720,1169042735,CO
1169042736,1169042767,US
1169042768,1169042783,AR
@@ -29532,10 +34766,24 @@
1170191104,1170191359,US
1170191360,1170191871,DE
1170191872,1170192383,HK
-1170192384,1170227199,US
+1170192384,1170211779,US
+1170211780,1170211795,JP
+1170211796,1170211796,US
+1170211797,1170211804,JP
+1170211805,1170211805,US
+1170211806,1170211830,JP
+1170211831,1170212067,US
+1170212068,1170212070,JP
+1170212071,1170212072,US
+1170212073,1170212074,JP
+1170212075,1170212076,US
+1170212077,1170212077,JP
+1170212078,1170227199,US
1170227200,1170231295,NL
1170231296,1170350079,US
-1170350080,1170358271,CA
+1170350080,1170355199,CA
+1170355200,1170356223,US
+1170356224,1170358271,CA
1170358272,1170374655,AE
1170374656,1170382847,US
1170382848,1170386943,HK
@@ -29565,7 +34813,9 @@
1173061632,1173078015,CN
1173078016,1175977983,US
1175977984,1176502271,CA
-1176502272,1176616959,US
+1176502272,1176537855,US
+1176537856,1176538111,PT
+1176538112,1176616959,US
1176616960,1176627775,CA
1176627776,1176628223,US
1176628224,1176631551,CA
@@ -29618,32 +34868,20 @@
1176914168,1176914175,US
1176914176,1176916911,CA
1176916912,1176916919,US
-1176916920,1176917863,CA
-1176917864,1176917871,US
-1176917872,1176920063,CA
+1176916920,1176920063,CA
1176920064,1176920319,KY
-1176920320,1176921007,CA
-1176921008,1176921015,US
-1176921016,1176921647,CA
-1176921648,1176921655,US
-1176921656,1176922927,CA
-1176922928,1176922935,US
-1176922936,1176923543,CA
+1176920320,1176923543,CA
1176923544,1176923551,MX
1176923552,1176925007,CA
1176925008,1176925015,NG
-1176925016,1176926703,CA
-1176926704,1176926711,US
-1176926712,1176928255,CA
+1176925016,1176928255,CA
1176928256,1177000703,US
1177000704,1177000711,CA
1177000712,1177000719,US
1177000720,1177000735,CA
1177000736,1177000751,US
1177000752,1177000759,CA
-1177000760,1177022975,US
-1177022976,1177023231,GB
-1177023232,1177030655,US
+1177000760,1177030655,US
1177030656,1177033727,AG
1177033728,1177059327,US
1177059328,1177061375,CA
@@ -29695,7 +34933,9 @@
1208090624,1208107007,CA
1208107008,1208209175,US
1208209176,1208209183,CA
-1208209184,1208590335,US
+1208209184,1208328959,US
+1208328960,1208329215,NL
+1208329216,1208590335,US
1208590336,1208598527,CA
1208598528,1208647679,US
1208647680,1208659967,CA
@@ -29719,12 +34959,13 @@
1208935984,1208935991,IN
1208935992,1208935999,JP
1208936000,1208936003,HK
-1208936004,1208936007,AU
+1208936004,1208936007,US
1208936008,1208936015,ID
-1208936016,1208936023,AU
+1208936016,1208936023,US
1208936024,1208936039,IN
1208936040,1208936047,JP
-1208936048,1208936199,AU
+1208936048,1208936191,US
+1208936192,1208936199,AU
1208936200,1208936207,SG
1208936208,1208936215,HK
1208936216,1208936223,IN
@@ -29733,12 +34974,11 @@
1208936240,1208936247,JP
1208936248,1208936255,IN
1208936256,1208936263,MY
-1208936264,1208936295,AU
+1208936264,1208936295,US
1208936296,1208936299,HK
-1208936300,1208936311,AU
+1208936300,1208936311,US
1208936312,1208936313,ID
-1208936314,1208936447,AU
-1208936448,1208954879,US
+1208936314,1208954879,US
1208954880,1208958975,CA
1208958976,1208975359,US
1208975360,1208983551,CA
@@ -29826,7 +35066,8 @@
1211324928,1211333375,BB
1211333376,1211333631,VC
1211333632,1211333887,GD
-1211333888,1211334655,VG
+1211333888,1211334143,BB
+1211334144,1211334655,VG
1211334656,1211367935,US
1211367936,1211368191,CA
1211368192,1211390981,US
@@ -29844,9 +35085,7 @@
1211473920,1211482367,US
1211482368,1211498495,CA
1211498496,1211596799,US
-1211596800,1211600959,CA
-1211600960,1211600967,US
-1211600968,1211605939,CA
+1211596800,1211605939,CA
1211605940,1211605943,PH
1211605944,1211605999,CA
1211606000,1211606003,US
@@ -29868,45 +35107,323 @@
1219256320,1219264511,CA
1219264512,1219272703,US
1219272704,1219276799,CA
-1219276800,1224104959,US
+1219276800,1224092502,US
+1224092503,1224092503,CA
+1224092504,1224092507,US
+1224092508,1224092511,CA
+1224092512,1224092540,US
+1224092541,1224092543,CA
+1224092544,1224092547,US
+1224092548,1224092551,CA
+1224092552,1224092555,US
+1224092556,1224092559,CA
+1224092560,1224092563,US
+1224092564,1224092567,CA
+1224092568,1224092571,US
+1224092572,1224092575,CA
+1224092576,1224092583,US
+1224092584,1224092585,CA
+1224092586,1224092611,US
+1224092612,1224092626,CA
+1224092627,1224092627,US
+1224092628,1224092649,CA
+1224092650,1224092662,US
+1224092663,1224092670,CA
+1224092671,1224104959,US
1224104960,1224105471,NL
1224105472,1224107007,US
1224107008,1224107519,NL
-1224107520,1224112127,US
+1224107520,1224107854,US
+1224107855,1224107858,KR
+1224107859,1224107862,US
+1224107863,1224107866,KR
+1224107867,1224107870,US
+1224107871,1224107874,KR
+1224107875,1224107878,US
+1224107879,1224107881,KR
+1224107882,1224112127,US
1224112128,1224113151,NL
1224113152,1224118271,US
1224118272,1224119807,NL
-1224119808,1224124415,US
+1224119808,1224119859,US
+1224119860,1224119863,JP
+1224119864,1224119867,US
+1224119868,1224119871,JP
+1224119872,1224119875,US
+1224119876,1224119879,JP
+1224119880,1224119883,US
+1224119884,1224119887,JP
+1224119888,1224119891,US
+1224119892,1224119895,JP
+1224119896,1224120165,US
+1224120166,1224120167,IL
+1224120168,1224120171,US
+1224120172,1224120175,IL
+1224120176,1224120179,US
+1224120180,1224120183,IL
+1224120184,1224120187,US
+1224120188,1224120191,IL
+1224120192,1224120195,US
+1224120196,1224120199,IL
+1224120200,1224120203,US
+1224120204,1224120207,IL
+1224120208,1224120211,US
+1224120212,1224120215,IL
+1224120216,1224120219,US
+1224120220,1224120223,IL
+1224120224,1224120227,US
+1224120228,1224120231,IL
+1224120232,1224120235,US
+1224120236,1224120237,IL
+1224120238,1224120251,US
+1224120252,1224120255,IL
+1224120256,1224120259,US
+1224120260,1224120263,IL
+1224120264,1224120267,US
+1224120268,1224120271,IL
+1224120272,1224124415,US
1224124416,1224126463,NL
-1224126464,1224138751,US
+1224126464,1224129555,US
+1224129556,1224129559,JP
+1224129560,1224129563,US
+1224129564,1224129567,JP
+1224129568,1224129941,US
+1224129942,1224129945,JP
+1224129946,1224129949,US
+1224129950,1224129953,JP
+1224129954,1224129957,US
+1224129958,1224129961,JP
+1224129962,1224129965,US
+1224129966,1224129967,JP
+1224129968,1224129968,US
+1224129969,1224129969,JP
+1224129970,1224129973,US
+1224129974,1224129977,JP
+1224129978,1224129981,US
+1224129982,1224129985,JP
+1224129986,1224129989,US
+1224129990,1224129991,JP
+1224129992,1224130235,US
+1224130236,1224130238,JP
+1224130239,1224130239,US
+1224130240,1224130244,JP
+1224130245,1224130245,US
+1224130246,1224130256,JP
+1224130257,1224130257,US
+1224130258,1224130265,JP
+1224130266,1224130397,US
+1224130398,1224130399,JP
+1224130400,1224130400,US
+1224130401,1224130406,JP
+1224130407,1224130407,US
+1224130408,1224130423,JP
+1224130424,1224130424,US
+1224130425,1224130425,JP
+1224130426,1224130427,US
+1224130428,1224130428,JP
+1224130429,1224130499,US
+1224130500,1224130503,JP
+1224130504,1224130507,US
+1224130508,1224130511,JP
+1224130512,1224136835,US
+1224136836,1224136839,BR
+1224136840,1224136841,US
+1224136842,1224136859,BR
+1224136860,1224136887,US
+1224136888,1224136888,BR
+1224136889,1224138751,US
1224138752,1224139775,NL
1224139776,1224140287,US
-1224140288,1224140799,NL
+1224140288,1224140675,NL
+1224140676,1224140679,GB
+1224140680,1224140683,NL
+1224140684,1224140687,GB
+1224140688,1224140691,NL
+1224140692,1224140695,GB
+1224140696,1224140699,NL
+1224140700,1224140703,GB
+1224140704,1224140707,NL
+1224140708,1224140710,GB
+1224140711,1224140715,NL
+1224140716,1224140719,GB
+1224140720,1224140723,NL
+1224140724,1224140727,GB
+1224140728,1224140799,NL
1224140800,1224151039,US
1224151040,1224152575,NL
1224152576,1224157695,US
1224157696,1224158207,NL
-1224158208,1224167935,US
+1224158208,1224167477,US
+1224167478,1224167479,JP
+1224167480,1224167483,US
+1224167484,1224167487,JP
+1224167488,1224167491,US
+1224167492,1224167495,JP
+1224167496,1224167499,US
+1224167500,1224167503,JP
+1224167504,1224167507,US
+1224167508,1224167508,JP
+1224167509,1224167529,US
+1224167530,1224167532,JP
+1224167533,1224167536,US
+1224167537,1224167540,JP
+1224167541,1224167544,US
+1224167545,1224167546,JP
+1224167547,1224167555,US
+1224167556,1224167559,JP
+1224167560,1224167563,US
+1224167564,1224167567,JP
+1224167568,1224167571,US
+1224167572,1224167575,JP
+1224167576,1224167579,US
+1224167580,1224167583,JP
+1224167584,1224167587,US
+1224167588,1224167591,JP
+1224167592,1224167596,US
+1224167597,1224167600,JP
+1224167601,1224167604,US
+1224167605,1224167608,JP
+1224167609,1224167935,US
1224167936,1224169471,NL
1224169472,1224170495,US
1224170496,1224171519,NL
1224171520,1224190975,US
-1224190976,1224193023,NL
-1224193024,1224193535,US
-1224193536,1224193791,NL
+1224190976,1224192061,NL
+1224192062,1224192062,GB
+1224192063,1224192117,NL
+1224192118,1224192119,GB
+1224192120,1224192147,NL
+1224192148,1224192151,GB
+1224192152,1224192155,NL
+1224192156,1224192159,GB
+1224192160,1224192163,NL
+1224192164,1224192167,GB
+1224192168,1224192171,NL
+1224192172,1224192174,GB
+1224192175,1224192179,NL
+1224192180,1224192183,GB
+1224192184,1224192187,NL
+1224192188,1224192188,GB
+1224192189,1224192195,NL
+1224192196,1224192199,GB
+1224192200,1224192203,NL
+1224192204,1224192207,GB
+1224192208,1224192211,NL
+1224192212,1224192215,GB
+1224192216,1224192708,NL
+1224192709,1224192711,DE
+1224192712,1224192715,NL
+1224192716,1224192718,DE
+1224192719,1224192723,NL
+1224192724,1224192727,DE
+1224192728,1224192731,NL
+1224192732,1224192732,DE
+1224192733,1224192733,NL
+1224192734,1224192735,DE
+1224192736,1224192739,NL
+1224192740,1224192743,DE
+1224192744,1224192747,NL
+1224192748,1224192749,DE
+1224192750,1224192750,NL
+1224192751,1224192751,DE
+1224192752,1224192755,NL
+1224192756,1224192756,DE
+1224192757,1224192838,NL
+1224192839,1224192839,DE
+1224192840,1224192843,NL
+1224192844,1224192844,DE
+1224192845,1224192845,NL
+1224192846,1224192847,DE
+1224192848,1224192851,NL
+1224192852,1224192855,DE
+1224192856,1224192859,NL
+1224192860,1224192863,DE
+1224192864,1224192867,NL
+1224192868,1224192871,DE
+1224192872,1224192875,NL
+1224192876,1224192879,DE
+1224192880,1224192883,NL
+1224192884,1224192887,DE
+1224192888,1224192900,NL
+1224192901,1224192903,DE
+1224192904,1224192907,NL
+1224192908,1224192911,DE
+1224192912,1224192963,NL
+1224192964,1224192967,DE
+1224192968,1224192971,NL
+1224192972,1224192975,DE
+1224192976,1224192979,NL
+1224192980,1224192983,DE
+1224192984,1224193023,NL
+1224193024,1224193333,US
+1224193334,1224193337,JP
+1224193338,1224193341,US
+1224193342,1224193345,JP
+1224193346,1224193349,US
+1224193350,1224193353,JP
+1224193354,1224193357,US
+1224193358,1224193361,JP
+1224193362,1224193365,US
+1224193366,1224193369,JP
+1224193370,1224193373,US
+1224193374,1224193377,JP
+1224193378,1224193381,US
+1224193382,1224193385,JP
+1224193386,1224193389,US
+1224193390,1224193393,JP
+1224193394,1224193397,US
+1224193398,1224193401,JP
+1224193402,1224193405,US
+1224193406,1224193409,JP
+1224193410,1224193535,US
+1224193536,1224193669,NL
+1224193670,1224193671,PL
+1224193672,1224193675,NL
+1224193676,1224193676,PL
+1224193677,1224193677,NL
+1224193678,1224193679,PL
+1224193680,1224193683,NL
+1224193684,1224193687,PL
+1224193688,1224193691,NL
+1224193692,1224193692,PL
+1224193693,1224193791,NL
1224193792,1224194047,US
1224194048,1224194559,NL
1224194560,1224197119,US
1224197120,1224198143,NL
1224198144,1224200703,US
-1224200704,1224200959,NL
+1224200704,1224200787,NL
+1224200788,1224200788,ES
+1224200789,1224200789,NL
+1224200790,1224200793,ES
+1224200794,1224200796,NL
+1224200797,1224200797,ES
+1224200798,1224200798,NL
+1224200799,1224200812,ES
+1224200813,1224200959,NL
1224200960,1224201215,US
1224201216,1224202239,NL
1224202240,1224327167,US
1224327168,1224327295,NL
1224327296,1224327935,US
1224327936,1224328063,CA
-1224328064,1224328191,NL
+1224328064,1224328067,NL
+1224328068,1224328071,US
+1224328072,1224328075,NL
+1224328076,1224328079,US
+1224328080,1224328083,NL
+1224328084,1224328087,US
+1224328088,1224328091,NL
+1224328092,1224328095,US
+1224328096,1224328099,NL
+1224328100,1224328103,US
+1224328104,1224328107,NL
+1224328108,1224328111,US
+1224328112,1224328115,NL
+1224328116,1224328119,US
+1224328120,1224328123,NL
+1224328124,1224328127,US
+1224328128,1224328191,NL
1224328192,1224329215,US
1224329216,1224329471,CA
1224329472,1224331263,US
@@ -29924,10 +35441,16 @@
1224484864,1224493055,GT
1224493056,1224499199,US
1224499200,1224501247,GT
-1224501248,1224527743,JM
+1224501248,1224503551,JM
+1224503552,1224503807,BS
+1224503808,1224523520,JM
+1224523521,1224523558,US
+1224523559,1224523559,JM
+1224523560,1224523775,US
+1224523776,1224527743,JM
1224527744,1224527871,US
-1224527872,1224540159,JM
-1224540160,1224671231,US
+1224527872,1224539904,JM
+1224539905,1224671231,US
1224671232,1224687615,PK
1224687616,1224728575,US
1224728576,1224736767,HK
@@ -30019,11 +35542,11 @@
1246890465,1246890495,CA
1246890496,1246895103,US
1246895104,1246895615,NL
-1246895616,1246900223,US
+1246895616,1246899916,US
+1246899917,1246899917,HK
+1246899918,1246900223,US
1246900224,1246900287,HK
-1246900288,1246902783,US
-1246902784,1246903039,NL
-1246903040,1246904575,US
+1246900288,1246904575,US
1246904576,1246905343,CA
1246905344,1246905599,US
1246905600,1246912511,CA
@@ -30209,23 +35732,24 @@
1249716736,1249717759,US
1249717760,1249718015,FI
1249718016,1249718271,BE
-1249718272,1249720351,US
+1249718272,1249720319,US
+1249720320,1249720351,AU
1249720352,1249720367,JP
-1249720368,1249720511,US
+1249720368,1249720511,AU
1249720512,1249720527,IN
-1249720528,1249720575,US
+1249720528,1249720575,AU
1249720576,1249720591,FR
-1249720592,1249720599,US
+1249720592,1249720599,AU
1249720600,1249720607,DE
-1249720608,1249720663,US
+1249720608,1249720663,AU
1249720664,1249720671,SE
-1249720672,1249720703,US
+1249720672,1249720703,AU
1249720704,1249720707,GB
-1249720708,1249720711,US
+1249720708,1249720711,AU
1249720712,1249720719,NL
-1249720720,1249720751,US
+1249720720,1249720751,AU
1249720752,1249720767,GB
-1249720768,1249721343,US
+1249720768,1249721343,AU
1249721344,1249721351,AT
1249721352,1249721359,BE
1249721360,1249721367,CH
@@ -30248,9 +35772,9 @@
1249721520,1249721527,ZA
1249721528,1249721535,DK
1249721536,1249721539,PL
-1249721540,1249721543,US
+1249721540,1249721543,AU
1249721544,1249721551,GB
-1249721552,1249721599,US
+1249721552,1249721599,AU
1249721600,1249721607,AT
1249721608,1249721615,BE
1249721616,1249721623,CH
@@ -30277,11 +35801,11 @@
1249721792,1249721799,KE
1249721800,1249721807,TR
1249721808,1249721815,ZA
-1249721816,1249721825,US
+1249721816,1249721825,AU
1249721826,1249721827,IL
-1249721828,1249721833,US
+1249721828,1249721833,AU
1249721834,1249721835,GB
-1249721836,1249722111,US
+1249721836,1249722111,AU
1249722112,1249722367,IN
1249722368,1249724671,US
1249724672,1249724694,BE
@@ -30304,9 +35828,7 @@
1249754624,1249754879,SG
1249754880,1249796095,US
1249796096,1249804287,CA
-1249804288,1249851903,US
-1249851904,1249852159,FR
-1249852160,1249886207,US
+1249804288,1249886207,US
1249886208,1249902591,CA
1249902592,1252535295,US
1252535296,1252536319,VI
@@ -30314,8 +35836,8 @@
1254490112,1254555647,CA
1254555648,1254621183,US
1254621184,1254629375,CA
-1254629376,1254991871,US
-1254991872,1254998015,CA
+1254629376,1254989823,US
+1254989824,1254998015,CA
1254998016,1255002111,US
1255002112,1255006207,CA
1255006208,1255047167,US
@@ -30328,13 +35850,11 @@
1255274496,1255274751,SG
1255274752,1255276543,US
1255276544,1255342079,CA
-1255342080,1255469456,US
-1255469457,1255469457,GB
-1255469458,1255489535,US
+1255342080,1255489535,US
1255489536,1255505919,PR
-1255505920,1255512063,US
-1255512064,1255512831,CA
-1255512832,1255514111,US
+1255505920,1255512575,US
+1255512576,1255513087,CA
+1255513088,1255514111,US
1255514112,1255522303,CA
1255522304,1255571455,US
1255571456,1255579647,CA
@@ -30346,9 +35866,7 @@
1255972864,1255981055,CA
1255981056,1256001535,US
1256001536,1256005631,CA
-1256005632,1256030207,US
-1256030208,1256034303,CA
-1256034304,1256054399,US
+1256005632,1256054399,US
1256054400,1256054783,CZ
1256054784,1256079359,US
1256079360,1256087551,KY
@@ -30456,7 +35974,8 @@
1280081920,1280090111,US
1280090112,1280091135,AG
1280091136,1280092159,VG
-1280092160,1280094207,KN
+1280092160,1280093183,KN
+1280093184,1280094207,VG
1280094208,1280096255,AI
1280096256,1280097279,AG
1280097280,1280097791,LC
@@ -30531,11 +36050,9 @@
1296105472,1296171007,PL
1296171008,1296203775,DK
1296203776,1296236543,RU
-1296236544,1296236671,FR
+1296236544,1296236671,IE
1296236672,1296236799,US
-1296236800,1296237055,IE
-1296237056,1296237311,FR
-1296237312,1296237439,IE
+1296236800,1296237439,IE
1296237440,1296237567,IT
1296237568,1296237823,IE
1296237824,1296237824,GB
@@ -30543,19 +36060,15 @@
1296237826,1296237826,GB
1296237827,1296237878,IE
1296237879,1296237879,GB
-1296237880,1296238591,IE
-1296238592,1296238847,NL
-1296238848,1296239231,IE
-1296239232,1296239359,NL
-1296239360,1296239615,IE
+1296237880,1296239615,IE
1296239616,1296240127,DE
1296240128,1296242927,IE
1296242928,1296242943,GB
1296242944,1296243111,IE
1296243112,1296243119,GB
-1296243120,1296244095,IE
-1296244096,1296244223,US
-1296244224,1296244991,IE
+1296243120,1296243839,IE
+1296243840,1296243967,US
+1296243968,1296244991,IE
1296244992,1296245247,CH
1296245248,1296246783,IE
1296246784,1296247039,NL
@@ -30563,20 +36076,18 @@
1296247296,1296247807,DE
1296247808,1296248015,IE
1296248016,1296248031,GB
-1296248032,1296248447,IE
-1296248448,1296248575,DE
-1296248576,1296249023,IE
+1296248032,1296249023,IE
1296249024,1296249087,GB
-1296249088,1296249407,IE
-1296249408,1296249423,GB
-1296249424,1296249439,IE
-1296249440,1296249455,GB
+1296249088,1296249343,IE
+1296249344,1296249455,GB
1296249456,1296249463,IT
1296249464,1296249471,GB
1296249472,1296249567,IE
1296249568,1296249599,NO
-1296249600,1296249855,GB
-1296249856,1296250367,IE
+1296249600,1296249615,GB
+1296249616,1296249747,IE
+1296249748,1296249751,GB
+1296249752,1296250367,IE
1296250368,1296250399,CZ
1296250400,1296250431,DE
1296250432,1296250463,PL
@@ -30588,7 +36099,8 @@
1296250616,1296250687,IE
1296250688,1296250695,ES
1296250696,1296250703,PL
-1296250704,1296250847,IE
+1296250704,1296250751,IE
+1296250752,1296250847,BE
1296250848,1296250879,GB
1296250880,1296250943,IE
1296250944,1296250947,FR
@@ -30597,9 +36109,7 @@
1296251096,1296251103,ES
1296251104,1296251199,IE
1296251200,1296251231,NL
-1296251232,1296251391,IE
-1296251392,1296251775,NL
-1296251776,1296252191,IE
+1296251232,1296252191,IE
1296252192,1296252199,ES
1296252200,1296252479,IE
1296252480,1296252487,ES
@@ -30620,18 +36130,26 @@
1296252648,1296252655,GB
1296252656,1296252667,IE
1296252668,1296252671,GB
-1296252672,1296254207,IE
+1296252672,1296252927,BE
+1296252928,1296254207,IE
1296254208,1296254463,US
1296254464,1296256839,IE
1296256840,1296256847,US
1296256848,1296258303,IE
-1296258304,1296258559,NL
-1296258560,1296259839,IE
-1296259840,1296260095,NL
+1296258304,1296258419,NL
+1296258420,1296258437,US
+1296258438,1296258438,NL
+1296258439,1296258456,US
+1296258457,1296258559,NL
+1296258560,1296258639,IE
+1296258640,1296258647,PL
+1296258648,1296258927,IE
+1296258928,1296258935,DE
+1296258936,1296258951,IE
+1296258952,1296258959,ES
+1296258960,1296260095,IE
1296260096,1296260351,US
-1296260352,1296261119,IE
-1296261120,1296261631,DE
-1296261632,1296262383,IE
+1296260352,1296262383,IE
1296262384,1296262399,IN
1296262400,1296262655,US
1296262656,1296263351,IE
@@ -30655,9 +36173,7 @@
1296264264,1296264271,GB
1296264272,1296264287,IE
1296264288,1296264303,US
-1296264304,1296264319,IE
-1296264320,1296264447,GB
-1296264448,1296265175,IE
+1296264304,1296265175,IE
1296265176,1296265183,RS
1296265184,1296265279,IE
1296265280,1296265343,DE
@@ -30674,9 +36190,7 @@
1296302080,1296334847,GB
1296334848,1296367615,DK
1296367616,1296400383,GR
-1296400384,1296432127,BH
-1296432128,1296432383,IT
-1296432384,1296433151,BH
+1296400384,1296433151,BH
1296433152,1296465919,BG
1296465920,1296469759,LU
1296469760,1296475135,FR
@@ -30838,10 +36352,9 @@
1297055744,1297072127,RU
1297072128,1297088511,PL
1297088512,1297121279,AT
-1297121280,1297121791,DK
-1297121792,1297129727,SE
-1297129728,1297130751,DK
-1297130752,1297154047,SE
+1297121280,1297129471,SE
+1297129472,1297131519,DK
+1297131520,1297154047,SE
1297154048,1297154303,RO
1297154304,1297154559,DE
1297154560,1297154815,RO
@@ -30883,7 +36396,8 @@
1297195008,1297195135,NL
1297195136,1297196031,US
1297196032,1297196799,RO
-1297196800,1297197055,CN
+1297196800,1297196800,ES
+1297196801,1297197055,CN
1297197056,1297199103,ES
1297199104,1297202175,RO
1297202176,1297202687,SE
@@ -30896,8 +36410,7 @@
1297219584,1297288191,RU
1297288192,1297289215,IT
1297289216,1297293311,RU
-1297293312,1297294334,US
-1297294335,1297294335,DE
+1297293312,1297294335,DE
1297294336,1297295359,UA
1297295360,1297296383,PL
1297296384,1297297407,PE
@@ -30917,7 +36430,7 @@
1297311744,1297312767,SK
1297312768,1297313791,DE
1297313792,1297314815,BG
-1297314816,1297315839,GB
+1297314816,1297315839,RU
1297315840,1297316863,AL
1297316864,1297317887,ES
1297317888,1297318911,PL
@@ -30967,16 +36480,16 @@
1297573888,1297575935,FR
1297575936,1297577983,RU
1297577984,1297580031,PL
-1297580032,1297582079,CH
+1297580032,1297582079,GB
1297582080,1297584127,PL
1297584128,1297588223,UA
1297588224,1297590271,NL
1297590272,1297592319,RU
-1297592320,1297593223,GB
-1297593224,1297593227,IM
-1297593228,1297593247,GB
-1297593248,1297593279,MT
-1297593280,1297594367,GB
+1297592320,1297593087,GB
+1297593088,1297593223,MT
+1297593224,1297593231,IM
+1297593232,1297593343,MT
+1297593344,1297594367,GB
1297594368,1297596415,DE
1297596416,1297598463,UA
1297598464,1297602559,RU
@@ -31002,9 +36515,7 @@
1297760256,1297776639,LT
1297776640,1297784319,DE
1297784320,1297784575,RU
-1297784576,1297785087,DE
-1297785088,1297786111,GB
-1297786112,1297786367,DE
+1297784576,1297786367,DE
1297786368,1297790463,RU
1297790464,1297791231,DE
1297791232,1297792511,RU
@@ -31043,9 +36554,7 @@
1297997824,1298006015,IT
1298006016,1298006783,RU
1298006784,1298014207,KZ
-1298014208,1298017279,LT
-1298017280,1298018303,BY
-1298018304,1298020351,LT
+1298014208,1298020351,LT
1298020352,1298022399,BY
1298022400,1298030591,IT
1298030592,1298038783,RU
@@ -31099,7 +36608,11 @@
1298698752,1298699007,US
1298699008,1298700258,BG
1298700259,1298700259,US
-1298700260,1298702847,BG
+1298700260,1298701514,BG
+1298701515,1298701515,US
+1298701516,1298701731,BG
+1298701732,1298701732,US
+1298701733,1298702847,BG
1298702848,1298703103,US
1298703104,1298705012,BG
1298705013,1298705013,SG
@@ -31112,8 +36625,7 @@
1298708881,1298710527,BG
1298710528,1298726911,CZ
1298726912,1298743295,RS
-1298743296,1298757631,FI
-1298757632,1298759679,FJ
+1298743296,1298759679,FI
1298759680,1298776063,RU
1298776064,1298792447,SE
1298792448,1298825215,RU
@@ -31131,14 +36643,15 @@
1299005952,1299008767,NL
1299008768,1299009023,BE
1299009024,1299009535,NL
-1299009536,1299015679,BE
+1299009536,1299011583,BE
+1299011584,1299013631,NL
+1299013632,1299015679,BE
1299015680,1299017727,NL
-1299017728,1299017983,BE
-1299017984,1299018239,NL
-1299018240,1299019775,BE
+1299017728,1299019775,BE
1299019776,1299020031,NL
1299020032,1299021055,BE
-1299021056,1299021823,NL
+1299021056,1299021311,NL
+1299021312,1299021823,BE
1299021824,1299025148,CH
1299025149,1299025149,DE
1299025150,1299026111,CH
@@ -31153,8 +36666,8 @@
1299104512,1299109375,NO
1299109376,1299109381,SJ
1299109382,1299109382,NO
-1299109383,1299109411,SJ
-1299109412,1299109412,NO
+1299109383,1299109410,SJ
+1299109411,1299109412,NO
1299109413,1299109443,SJ
1299109444,1299109444,NO
1299109445,1299109453,SJ
@@ -31182,11 +36695,14 @@
1299178496,1299180543,CH
1299180544,1299181567,GB
1299181568,1299182591,DK
+1299182592,1299182847,UA
1299184384,1299184639,IT
1299184640,1299185663,GB
1299185664,1299447807,PL
1299447808,1299709951,AT
-1299709952,1299779071,UA
+1299709952,1299724287,UA
+1299724288,1299725311,RU
+1299725312,1299779071,UA
1299779072,1299779327,RU
1299779328,1299935231,UA
1299935232,1299935999,BG
@@ -31296,7 +36812,15 @@
1307312128,1307320319,PL
1307320320,1307336703,RU
1307336704,1307344895,DE
-1307344896,1307353087,RU
+1307344896,1307345407,SA
+1307345408,1307345663,RU
+1307345664,1307346175,SA
+1307346176,1307346431,RU
+1307346432,1307346943,SA
+1307346944,1307347199,RU
+1307347200,1307348479,SA
+1307348480,1307348735,RU
+1307348736,1307353087,SA
1307353088,1307361279,BG
1307361280,1307369471,CZ
1307369472,1307377663,RU
@@ -31399,7 +36923,7 @@
1307787264,1307791359,MT
1307791360,1307792383,RU
1307792384,1307793407,DE
-1307793408,1307794431,RU
+1307793408,1307794431,GB
1307794432,1307795455,US
1307795456,1307803647,RU
1307803648,1307807743,DK
@@ -31496,13 +37020,11 @@
1308030976,1308033023,UA
1308033024,1308033685,DE
1308033686,1308033686,GB
-1308033687,1308035427,DE
-1308035428,1308035428,GB
-1308035429,1308035839,DE
-1308035840,1308036095,GB
+1308033687,1308035071,DE
+1308035072,1308036095,GB
1308036096,1308037119,DE
1308037120,1308041215,UA
-1308041216,1308049407,RU
+1308041216,1308049407,SA
1308049408,1308053503,DK
1308053504,1308055551,DE
1308055552,1308057599,AL
@@ -31525,17 +37047,18 @@
1308088320,1308090367,UA
1308090368,1308092415,SK
1308092416,1308096511,RU
-1308096512,1308096767,AL
-1308096768,1308097535,RS
-1308097536,1308098303,AL
-1308098304,1308098559,RS
+1308096512,1308098559,XK
1308098560,1308360703,NL
1308360704,1308622847,PL
1308622848,1308884991,HR
1308884992,1309147135,IT
1309147136,1309409279,PL
1309409280,1309671423,IT
-1309671424,1309933567,IE
+1309671424,1309682559,IE
+1309682560,1309682623,GB
+1309682624,1309682655,IE
+1309682656,1309682687,GB
+1309682688,1309933567,IE
1309933568,1310195711,BE
1310195712,1310197759,RU
1310197760,1310199807,CZ
@@ -31566,7 +37089,7 @@
1310240768,1310242815,RU
1310242816,1310244863,HU
1310244864,1310246911,EE
-1310246912,1310248959,ZA
+1310246912,1310248959,FR
1310248960,1310251007,IM
1310251008,1310255103,RU
1310255104,1310257151,CZ
@@ -31693,6 +37216,8 @@
1311311872,1311315967,CZ
1311315968,1311318015,PL
1311318016,1311320063,RU
+1311320064,1311321087,JP
+1311321088,1311322111,NO
1311322112,1311323135,DE
1311323136,1311324159,FR
1311324160,1311326207,LB
@@ -31716,8 +37241,7 @@
1311365120,1311367167,DE
1311367168,1311369215,GB
1311369216,1311371263,FR
-1311371264,1311371519,FI
-1311371520,1311373311,SE
+1311371264,1311373311,SE
1311373312,1311375359,FR
1311375360,1311506431,DE
1311506432,1311593431,CZ
@@ -31725,13 +37249,7 @@
1311593433,1311637503,CZ
1311637504,1312292863,DE
1312292864,1312817151,LT
-1312817152,1312927743,SE
-1312927744,1312929791,DK
-1312929792,1313186687,SE
-1313186688,1313186815,DK
-1313186816,1313199103,SE
-1313199104,1313199167,DK
-1313199168,1313865727,SE
+1312817152,1313865727,SE
1313865728,1313931263,CZ
1313931264,1313996799,RU
1313996800,1314062335,SE
@@ -31850,11 +37368,11 @@
1317470208,1317470463,CY
1317470464,1317471231,TR
1317471232,1317472255,CY
-1317472256,1317474303,TR
+1317472256,1317472911,TR
+1317472912,1317472912,CY
+1317472913,1317474303,TR
1317474304,1317478399,CY
-1317478400,1317485567,TR
-1317485568,1317486079,GB
-1317486080,1317502975,TR
+1317478400,1317502975,TR
1317502976,1317535743,IE
1317535744,1317552127,GB
1317552128,1317568511,ES
@@ -31862,8 +37380,7 @@
1317584896,1317585919,RU
1317585920,1317586943,FR
1317586944,1317587967,DE
-1317587968,1317588991,TR
-1317588992,1317593087,RU
+1317587968,1317593087,RU
1317593088,1317595135,GB
1317595136,1317597183,ES
1317597184,1317599231,RU
@@ -31876,23 +37393,19 @@
1317634048,1317634303,IE
1317634304,1317636095,GB
1317636096,1317638143,IE
-1317638144,1317640191,GB
-1317640192,1317642495,IE
+1317638144,1317641215,GB
+1317641216,1317641727,IE
+1317641728,1317642239,GB
+1317642240,1317642495,IE
1317642496,1317643316,GB
1317643317,1317643317,IE
-1317643318,1317644287,GB
-1317644288,1317646335,IE
-1317646336,1317647015,GB
-1317647016,1317647023,IE
-1317647024,1317647026,GB
+1317643318,1317647026,GB
1317647027,1317647027,IE
1317647028,1317650130,GB
1317650131,1317650131,IE
1317650132,1317650431,GB
1317650432,1317666815,PT
-1317666816,1317667791,GB
-1317667792,1317667799,NG
-1317667800,1317683199,GB
+1317666816,1317683199,GB
1317683200,1317685247,DE
1317685248,1317686271,BE
1317686272,1317687295,NL
@@ -31903,8 +37416,7 @@
1317748736,1317765119,RU
1317765120,1317781503,GE
1317781504,1317814271,RU
-1317814272,1317816319,NL
-1317816320,1317816335,DE
+1317814272,1317816335,DE
1317816336,1317816351,JP
1317816352,1317818383,DE
1317818384,1317818391,RU
@@ -31922,13 +37434,14 @@
1317931008,1317931263,US
1317931264,1317945343,BG
1317945344,1317978111,AT
-1317978112,1317979135,GB
+1317978112,1317978367,GB
+1317978368,1317979135,NL
1317979136,1317980159,IT
1317980160,1317981183,ES
1317981184,1317982207,HU
1317982208,1317983231,TR
1317983232,1317984255,ES
-1317984256,1317985279,NL
+1317984256,1317985279,GB
1317985280,1317986303,RU
1317986304,1317987327,PL
1317987328,1317988351,NL
@@ -31940,8 +37453,7 @@
1318027264,1318043647,IE
1318043648,1318051839,GB
1318051840,1318055935,PS
-1318055936,1318056191,US
-1318056192,1318058879,GB
+1318055936,1318058879,GB
1318058880,1318058887,AE
1318058888,1318584319,GB
1318584320,1318592511,PL
@@ -32003,20 +37515,20 @@
1318936448,1318936575,LT
1318936576,1318944767,DK
1318944768,1318958079,CZ
-1318958080,1318959103,PL
-1318959104,1318961151,CZ
+1318958080,1318960127,PL
+1318960128,1318961151,CZ
1318961152,1318969343,GB
1318969344,1318977535,RU
1318977536,1318985727,LT
1318985728,1318988799,GB
1318989824,1319000063,GB
-1319000064,1319002111,US
+1319000064,1319001087,US
+1319001088,1319002111,GB
1319002112,1319010303,IE
1319010304,1319018495,CY
1319018496,1319026687,IR
1319026688,1319034879,UA
-1319034880,1319035903,NO
-1319035904,1319036927,DK
+1319034880,1319036927,NO
1319036928,1319038975,SE
1319038976,1319043071,NO
1319043072,1319051263,FR
@@ -32129,7 +37641,8 @@
1332615168,1332615423,DE
1332615424,1332615551,RU
1332615552,1332615679,UA
-1332615680,1332616191,RO
+1332615680,1332615935,RO
+1332615936,1332616191,CZ
1332616192,1332616319,GB
1332616320,1332616447,US
1332616448,1332616703,CZ
@@ -32241,7 +37754,9 @@
1334380448,1334380463,LT
1334380464,1334380543,FR
1334380544,1334380799,BE
-1334380800,1334381823,FR
+1334380800,1334380991,FR
+1334380992,1334381055,FI
+1334381056,1334381823,FR
1334381824,1334381839,IT
1334381840,1334381887,FR
1334381888,1334381919,IT
@@ -32249,7 +37764,9 @@
1334381984,1334382015,FI
1334382016,1334382047,FR
1334382048,1334382063,PL
-1334382064,1334382975,FR
+1334382064,1334382915,FR
+1334382916,1334382919,DE
+1334382920,1334382975,FR
1334382976,1334383103,GB
1334383104,1334383615,FR
1334383616,1334383679,DE
@@ -32313,7 +37830,9 @@
1334392224,1334392255,ES
1334392256,1334392639,FR
1334392640,1334392655,DE
-1334392656,1334392847,FR
+1334392656,1334392787,FR
+1334392788,1334392791,LT
+1334392792,1334392847,FR
1334392848,1334392863,FI
1334392864,1334392895,DE
1334392896,1334392959,GB
@@ -32336,8 +37855,7 @@
1334404992,1334405119,GB
1334405120,1334405311,FR
1334405312,1334405327,GB
-1334405328,1334405755,FR
-1334405756,1334405759,GB
+1334405328,1334405759,FR
1334405760,1334405791,FI
1334405792,1334405919,FR
1334405920,1334405951,PL
@@ -32369,7 +37887,11 @@
1334410736,1334410751,GB
1334410752,1334411263,FR
1334411264,1334444031,RU
-1334444032,1334509567,SE
+1334444032,1334480895,SE
+1334480896,1334482943,DK
+1334482944,1334491135,SE
+1334491136,1334493183,DK
+1334493184,1334509567,SE
1334509568,1334542335,PL
1334542336,1334575103,RU
1334575104,1334579199,UA
@@ -32388,9 +37910,7 @@
1334632448,1334636543,KZ
1334636544,1334640639,RU
1334640640,1334644735,FR
-1334644736,1334647039,DE
-1334647040,1334647807,IQ
-1334647808,1334648831,DE
+1334644736,1334648831,DE
1334648832,1334652927,GB
1334652928,1334661119,RU
1334661120,1334665215,CH
@@ -32403,7 +37923,8 @@
1334683136,1334683647,CA
1334683648,1334684159,HK
1334684160,1334684671,GB
-1334684672,1334685695,NL
+1334684672,1334685183,NL
+1334685184,1334685695,SE
1334685696,1334689791,IT
1334689792,1334693887,FR
1334693888,1334697983,RU
@@ -32478,8 +37999,7 @@
1336549376,1336551423,IM
1336551424,1336553471,GB
1336553472,1336555519,SA
-1336555520,1336556543,BE
-1336556544,1336557567,FR
+1336555520,1336557567,FR
1336557568,1336559615,ES
1336559616,1336561663,GB
1336561664,1336563711,NO
@@ -32576,29 +38096,25 @@
1337982976,1342177279,DE
1342177280,1342701567,GB
1342701568,1342750719,RE
-1342750720,1342751231,YT
-1342751232,1342751487,RE
-1342751488,1342752255,YT
-1342752256,1342752511,FR
-1342752512,1342753279,YT
+1342750720,1342753279,YT
1342753280,1342753535,FR
-1342753536,1342755839,YT
+1342753536,1342754047,YT
+1342754048,1342754303,FR
+1342754304,1342755839,YT
1342755840,1342756095,FR
1342756096,1342756607,YT
-1342756608,1342757119,FR
-1342757120,1342757375,YT
-1342757376,1342757631,FR
-1342757632,1342759423,YT
-1342759424,1342759679,FR
-1342759680,1342759935,YT
-1342759936,1342760191,FR
-1342760192,1342761215,YT
+1342756608,1342757631,FR
+1342757632,1342759167,YT
+1342759168,1342759423,FR
+1342759424,1342761215,YT
1342761216,1342761471,FR
1342761472,1342764287,YT
1342764288,1342764543,FR
1342764544,1342765567,YT
1342765568,1342765823,FR
-1342765824,1342767103,YT
+1342765824,1342766591,YT
+1342766592,1342766847,FR
+1342766848,1342767103,YT
1342767104,1342834687,FR
1342834688,1342842879,JO
1342842880,1342844927,FR
@@ -32614,28 +38130,20 @@
1342959051,1342988287,FR
1342988288,1342989055,US
1342989056,1342996479,FR
-1342996480,1342998783,GF
-1342998784,1342999039,FR
-1342999040,1343001855,GF
+1342996480,1342997503,GF
+1342997504,1342997759,FR
+1342997760,1343001855,GF
1343001856,1343002111,FR
1343002112,1343005183,GF
1343005184,1343005439,FR
-1343005440,1343009791,GF
-1343009792,1343010047,FR
-1343010048,1343011839,GF
-1343011840,1343012095,FR
-1343012096,1343012863,GF
-1343012864,1343017983,FR
-1343017984,1343019007,RE
-1343019008,1343027711,FR
+1343005440,1343008511,GF
+1343008512,1343008767,FR
+1343008768,1343012351,GF
+1343012352,1343012607,FR
+1343012608,1343012863,GF
+1343012864,1343027711,FR
1343027712,1343027967,RE
-1343027968,1343218687,FR
-1343218688,1343219711,DE
-1343219712,1343220607,FR
-1343220608,1343220639,DE
-1343220640,1343222015,FR
-1343222016,1343222271,GB
-1343222272,1343222911,FR
+1343027968,1343222911,FR
1343222912,1343223039,US
1343223040,1343224255,FR
1343224256,1343224303,US
@@ -32651,7 +38159,9 @@
1345847296,1345978367,NL
1345978368,1346109439,ES
1346109440,1346240511,NL
-1346240512,1346371583,DK
+1346240512,1346327551,DK
+1346327552,1346327679,SE
+1346327680,1346371583,DK
1346371584,1346375679,FI
1346375680,1346379775,RU
1346379776,1346383871,ES
@@ -32666,7 +38176,8 @@
1346398711,1346398719,DE
1346398720,1346400255,RU
1346400256,1346404351,IT
-1346404352,1346408447,AT
+1346404352,1346407423,AT
+1346407424,1346408447,DE
1346408448,1346412543,LU
1346412544,1346416639,RU
1346416640,1346420735,DE
@@ -32716,14 +38227,62 @@
1346569984,1346570239,NO
1346570240,1346572287,SE
1346572288,1346576383,DE
-1346576384,1346577407,BZ
+1346576384,1346577407,NL
1346577408,1346578431,NO
1346578432,1346579455,RU
1346579456,1346580479,ES
1346580480,1346584575,RU
-1346584576,1346588159,US
+1346584576,1346587139,US
+1346587140,1346587143,DE
+1346587144,1346587147,US
+1346587148,1346587151,DE
+1346587152,1346587155,US
+1346587156,1346587159,DE
+1346587160,1346587163,US
+1346587164,1346587167,DE
+1346587168,1346587171,US
+1346587172,1346587175,DE
+1346587176,1346587179,US
+1346587180,1346587183,DE
+1346587184,1346587187,US
+1346587188,1346587191,DE
+1346587192,1346587195,US
+1346587196,1346587199,DE
+1346587200,1346587203,US
+1346587204,1346587207,DE
+1346587208,1346587211,US
+1346587212,1346587215,DE
+1346587216,1346587219,US
+1346587220,1346587223,DE
+1346587224,1346587227,US
+1346587228,1346587231,DE
+1346587232,1346587235,US
+1346587236,1346587239,DE
+1346587240,1346587243,US
+1346587244,1346587247,DE
+1346587248,1346587251,US
+1346587252,1346587255,DE
+1346587256,1346587259,US
+1346587260,1346587263,DE
+1346587264,1346588159,US
1346588160,1346588671,KR
-1346588928,1346589439,US
+1346588928,1346589187,US
+1346589188,1346589191,CH
+1346589192,1346589195,US
+1346589196,1346589199,CH
+1346589200,1346589203,US
+1346589204,1346589207,CH
+1346589208,1346589211,US
+1346589212,1346589215,CH
+1346589216,1346589219,US
+1346589220,1346589223,CH
+1346589224,1346589227,US
+1346589228,1346589231,CH
+1346589232,1346589235,US
+1346589236,1346589239,CH
+1346589240,1346589243,US
+1346589244,1346589247,CH
+1346589248,1346589439,US
1346589440,1346589695,DE
1346589696,1346592767,US
1346592768,1346596863,ES
@@ -32758,8 +38317,7 @@
1346740224,1346744319,FI
1346744320,1346748415,RU
1346748416,1346752511,DE
-1346752512,1346754559,RE
-1346754560,1346756607,FR
+1346752512,1346756607,RE
1346756608,1346760703,SE
1346760704,1346764799,IR
1346764800,1346768895,DK
@@ -32854,7 +38412,8 @@
1347149056,1347149311,GB
1347149312,1347149567,DE
1347149568,1347149823,IN
-1347149824,1347151423,HU
+1347149824,1347150399,AT
+1347150400,1347151423,HU
1347151424,1347158015,AT
1347158016,1347159935,CH
1347159936,1347160063,AT
@@ -32872,10 +38431,10 @@
1347186688,1347190783,GB
1347190784,1347194879,RU
1347194880,1347198975,SE
-1347198976,1347200564,QA
-1347200565,1347200565,SA
-1347200566,1347200767,QA
-1347200768,1347201023,DE
+1347198976,1347200767,QA
+1347200768,1347200959,DE
+1347200960,1347200991,QA
+1347200992,1347201023,DE
1347201024,1347203071,QA
1347203072,1347207167,RU
1347207168,1347215359,GB
@@ -33096,7 +38655,9 @@
1347309568,1347313663,DE
1347313664,1347321855,RU
1347321856,1347322879,ES
-1347322880,1347323903,DE
+1347322880,1347323371,DE
+1347323372,1347323375,US
+1347323376,1347323903,DE
1347323904,1347324927,CZ
1347324928,1347325951,GB
1347325952,1347330047,CZ
@@ -33170,19 +38731,12 @@
1347551232,1347555327,IT
1347555328,1347559423,PL
1347559424,1347567615,RU
-1347567616,1347567888,SC
-1347567889,1347567889,NL
-1347567890,1347568639,SC
-1347568640,1347568895,NL
-1347568896,1347569125,SC
-1347569126,1347569126,NL
-1347569127,1347569314,SC
+1347567616,1347569151,NL
+1347569152,1347569314,SC
1347569315,1347569315,NL
1347569316,1347569407,SC
-1347569408,1347570687,NL
-1347570688,1347570955,SC
-1347570956,1347570956,NL
-1347570957,1347571538,SC
+1347569408,1347571455,NL
+1347571456,1347571538,SC
1347571539,1347571539,NL
1347571540,1347571711,SC
1347571712,1347575807,RU
@@ -33204,8 +38758,7 @@
1347649536,1347653631,GE
1347653632,1347657727,GB
1347657728,1347661823,IT
-1347661824,1347663871,DE
-1347664896,1347665919,DE
+1347661824,1347665919,DE
1347665920,1347670015,RU
1347670016,1347674111,SE
1347674112,1347682303,RU
@@ -33226,9 +38779,7 @@
1347731456,1347739647,DE
1347739648,1347747839,NL
1347747840,1347751935,DE
-1347751936,1347754903,CY
-1347754904,1347754911,GR
-1347754912,1347756031,CY
+1347751936,1347756031,CY
1347756032,1347760127,NL
1347760128,1347764223,HU
1347764224,1347772415,GB
@@ -33410,9 +38961,7 @@
1348456448,1348460543,BH
1348460544,1348464639,SI
1348464640,1348468735,CZ
-1348468736,1348548607,RO
-1348548608,1348549631,MD
-1348549632,1348599807,RO
+1348468736,1348599807,RO
1348599808,1348730879,HU
1348730880,1348861951,NL
1348861952,1348993023,ES
@@ -33421,23 +38970,15 @@
1349255168,1349451775,AT
1349451776,1349517311,IE
1349517312,1349589503,NL
-1349589504,1349589759,GB
+1349589504,1349589759,CH
1349589760,1349763071,NL
1349763072,1349771263,RU
1349771264,1349779455,NL
1349779456,1349910527,IT
1349910528,1350041599,FR
-1350041600,1350159359,AT
-1350159360,1350159871,HU
-1350159872,1350215679,AT
-1350215680,1350215935,IQ
-1350215936,1350216959,AT
-1350216960,1350217215,IQ
-1350217216,1350217471,AT
-1350217472,1350217727,IQ
-1350217728,1350289407,AT
-1350289408,1350289919,CH
-1350289920,1350303743,AT
+1350041600,1350288639,AT
+1350288640,1350288895,CH
+1350288896,1350303743,AT
1350303744,1350434815,FR
1350434816,1350565887,NL
1350565888,1350763083,DE
@@ -33465,33 +39006,31 @@
1353271684,1353271684,AT
1353271685,1353271711,GB
1353271712,1353271719,AT
-1353271720,1353271727,GB
-1353271728,1353271743,AT
-1353271744,1353271775,GB
+1353271720,1353271775,GB
1353271776,1353271807,AT
-1353271808,1353272319,GB
-1353272320,1353272575,ES
-1353272576,1353272823,GB
-1353272824,1353272831,ES
+1353271808,1353272521,GB
+1353272522,1353272522,ES
+1353272523,1353272703,GB
+1353272704,1353272831,ES
1353272832,1353272983,GB
1353272984,1353272991,ES
-1353272992,1353273343,GB
-1353273344,1353274367,BE
-1353274368,1353275247,GB
-1353275248,1353275255,ES
-1353275256,1353277439,GB
+1353272992,1353273407,GB
+1353273408,1353273423,BE
+1353273424,1353277439,GB
1353277440,1353279487,CH
1353279488,1353280511,IT
1353280512,1353287679,GB
1353287680,1353289727,IE
1353289728,1353300063,GB
1353300064,1353300071,SE
-1353300072,1353308159,GB
+1353300072,1353300255,GB
+1353300256,1353300271,SE
+1353300272,1353304447,GB
+1353304448,1353304575,QA
+1353304576,1353308159,GB
1353308160,1353309183,FR
1353309184,1353312447,GB
-1353312448,1353312479,CH
-1353312480,1353312511,GB
-1353312512,1353312767,CH
+1353312448,1353312767,CH
1353312768,1353313167,GB
1353313168,1353313183,IT
1353313184,1353315327,GB
@@ -33589,14 +39128,12 @@
1357322240,1357322255,DE
1357322752,1357323007,GB
1357323008,1357323015,CG
-1357323264,1357323775,GB
1357323776,1357323791,FI
1357323792,1357323799,DK
1357323800,1357323801,SE
1357323802,1357323803,FI
1357323804,1357323807,SE
1357323808,1357323839,NO
-1357323840,1357324287,GB
1357324288,1357324295,RU
1357324296,1357324333,PL
1357326336,1357326337,ES
@@ -33612,7 +39149,7 @@
1357329168,1357329183,NL
1357329200,1357329215,NL
1357329408,1357329415,BE
-1357330944,1357331455,GB
+1357330944,1357331207,GB
1357335808,1357336063,IT
1357337600,1357337647,NL
1357337652,1357337652,NL
@@ -33638,9 +39175,9 @@
1357350400,1357350647,GB
1357350656,1357350847,GB
1357351168,1357351423,PL
-1357360064,1357360127,GB
+1357359104,1357360345,GB
1357360346,1357360346,LU
-1357361152,1357363199,GB
+1357360347,1357363199,GB
1357363200,1357363455,DE
1357364224,1357365247,ES
1357366880,1357366911,GB
@@ -33688,6 +39225,12 @@
1357878400,1357878463,NL
1357878528,1357878591,AT
1357878592,1357878655,PL
+1357881149,1357881151,NO
+1357881156,1357881159,NO
+1357881164,1357881167,NO
+1357881172,1357881175,NO
+1357881180,1357881183,NO
+1357881188,1357881189,NO
1357882832,1357882832,GB
1357883392,1357883647,FR
1357883744,1357883759,AT
@@ -33707,6 +39250,12 @@
1357899584,1357899615,NL
1357900800,1357901055,PL
1357901056,1357901183,SE
+1357901245,1357901247,ES
+1357901276,1357901284,ES
+1357901286,1357901296,ES
+1357901298,1357901300,ES
+1357901302,1357901302,ES
+1357901304,1357901309,ES
1357902366,1357902366,NO
1357903616,1357903743,CH
1357903744,1357903871,DK
@@ -33765,7 +39314,9 @@
1358049280,1358064639,RU
1358064640,1358065663,UA
1358065664,1358069759,BA
-1358069760,1358086143,DE
+1358069760,1358072543,DE
+1358072544,1358072575,CH
+1358072576,1358086143,DE
1358086144,1358090239,CH
1358090240,1358094335,KZ
1358094336,1358102527,NL
@@ -33789,9 +39340,7 @@
1358161920,1358162943,RS
1358162944,1358163967,CZ
1358163968,1358166015,MQ
-1358166016,1358166527,GP
-1358166528,1358166655,FR
-1358166656,1358168063,GP
+1358166016,1358168063,GP
1358168064,1358172159,GB
1358172160,1358176255,CY
1358176256,1358180351,RU
@@ -33916,11 +39465,7 @@
1358668448,1358668455,PT
1358668456,1358670975,GB
1358670976,1358671103,PT
-1358671104,1358671359,GB
-1358671360,1358671871,PT
-1358671872,1358671935,GB
-1358671936,1358671943,PT
-1358671944,1358672383,GB
+1358671104,1358672383,GB
1358672384,1358672639,ES
1358672640,1358673423,GB
1358673424,1358673431,DE
@@ -33959,9 +39504,7 @@
1358799360,1358802943,HR
1358802944,1358807039,HU
1358807040,1358811135,ES
-1358811136,1358812159,DE
-1358812160,1358812415,NL
-1358812416,1358815231,DE
+1358811136,1358815231,DE
1358815232,1358819327,RU
1358819328,1358823423,TR
1358823424,1358827519,UA
@@ -34233,7 +39776,9 @@
1360391168,1360392191,MD
1360392192,1360396287,EE
1360396288,1360400383,RU
-1360400384,1360404479,BH
+1360400384,1360401919,BH
+1360401920,1360402175,SA
+1360402176,1360404479,BH
1360404480,1360405503,BA
1360405504,1360406527,US
1360406528,1360407551,ES
@@ -34250,8 +39795,7 @@
1360445440,1360453631,RU
1360453632,1360454655,IT
1360454656,1360455679,HU
-1360455680,1360456703,ES
-1360456704,1360457727,CZ
+1360455680,1360457727,CZ
1360457728,1360461823,FI
1360461824,1360465919,RU
1360465920,1360470015,UA
@@ -34265,7 +39809,9 @@
1360515072,1360519167,JP
1360519168,1360524031,NL
1360524032,1360524287,US
-1360524288,1360531455,NL
+1360524288,1360525311,NL
+1360525312,1360527359,DE
+1360527360,1360531455,NL
1360531456,1360535551,RO
1360535552,1360539647,DE
1360539648,1360543743,NL
@@ -34334,7 +39880,9 @@
1360773120,1360777215,CZ
1360777216,1360781311,DK
1360781312,1360785407,DE
-1360785408,1360793599,RU
+1360785408,1360788303,RU
+1360788304,1360788311,DE
+1360788312,1360793599,RU
1360793600,1360797695,CZ
1360797696,1360805887,IR
1360805888,1360809983,DE
@@ -34424,7 +39972,9 @@
1362396416,1362396927,US
1362396928,1362397439,FR
1362397440,1362397695,US
-1362397696,1362404607,FR
+1362397696,1362398463,FR
+1362398464,1362398719,DE
+1362398720,1362404607,FR
1362404608,1362405887,DZ
1362405888,1362407679,FR
1362407680,1362407743,US
@@ -34436,16 +39986,12 @@
1362407920,1362407935,US
1362407936,1362411519,FR
1362411520,1362413273,MQ
-1362413274,1362415359,FR
-1362415360,1362415487,DE
-1362415488,1362415615,FR
+1362413274,1362415615,FR
1362415616,1362417663,GP
1362417664,1362419711,SG
1362419712,1362423807,FR
1362423808,1362425855,SG
-1362425856,1362426879,FR
-1362426880,1362427815,MQ
-1362427816,1362755583,FR
+1362425856,1362755583,FR
1362755584,1362886655,NL
1362886656,1363017727,ES
1363017728,1363148799,CH
@@ -34465,9 +40011,7 @@
1364529664,1364530175,GB
1364530176,1364541439,NL
1364541440,1364545535,SE
-1364545536,1364581375,NL
-1364581376,1364582399,LY
-1364582400,1364585727,NL
+1364545536,1364585727,NL
1364585728,1364585983,CA
1364585984,1364590591,NL
1364590592,1364721663,GB
@@ -34562,8 +40106,7 @@
1365000192,1365004287,SE
1365004288,1365008383,FR
1365008384,1365012479,CH
-1365012480,1365014527,US
-1365015552,1365015903,US
+1365012480,1365015903,US
1365015904,1365015919,GB
1365015920,1365016575,US
1365016576,1365020671,ES
@@ -34820,9 +40363,7 @@
1372027904,1372030975,GB
1372030976,1372031999,UG
1372032000,1372032255,ZM
-1372032256,1372043519,GB
-1372043520,1372043775,NG
-1372043776,1372045567,GB
+1372032256,1372045567,GB
1372045568,1372045823,ZM
1372045824,1372047231,GB
1372047232,1372047295,NG
@@ -34866,8 +40407,7 @@
1372651520,1372684287,FI
1372684544,1372684799,DE
1372685664,1372685679,DE
-1372688384,1372689407,DE
-1372689920,1372690175,DE
+1372688384,1372690431,DE
1372691594,1372691594,IE
1372694464,1372694495,DE
1372697344,1372697599,DE
@@ -34875,7 +40415,8 @@
1372699904,1372700159,DE
1372702720,1372703231,DE
1372703616,1372703743,DE
-1372708864,1372717055,DE
+1372708864,1372713983,DE
+1372715008,1372717055,DE
1372717056,1372749823,PL
1372749824,1372782591,DE
1372782592,1372815359,RU
@@ -34891,9 +40432,7 @@
1373437952,1373503487,CH
1373503488,1373569023,RU
1373569024,1373634559,AT
-1373634560,1373690367,SE
-1373690368,1373690431,DK
-1373690432,1374084607,SE
+1373634560,1374084607,SE
1374084608,1374084735,DK
1374084736,1374683135,SE
1374683136,1375207423,BE
@@ -34901,27 +40440,29 @@
1375208448,1375208703,GP
1375208704,1375210239,MQ
1375210240,1375210495,GP
-1375210496,1375210751,MQ
-1375210752,1375211007,FR
-1375211008,1375211519,MQ
-1375211520,1375212799,GP
-1375212800,1375213055,MF
-1375213056,1375215615,GP
-1375215616,1375217407,GF
-1375217408,1375217663,FR
-1375217664,1375217919,GF
-1375217920,1375218175,FR
-1375218176,1375220735,GF
-1375220736,1375221759,FR
-1375221760,1375222015,GF
-1375222016,1375222783,FR
-1375222784,1375223807,GF
-1375223808,1375227647,MQ
-1375227648,1375227903,GP
-1375227904,1375230207,MQ
+1375210496,1375211519,MQ
+1375211520,1375215615,GP
+1375215616,1375217151,GF
+1375217152,1375217663,FR
+1375217664,1375218687,GF
+1375218688,1375218943,FR
+1375218944,1375220735,GF
+1375220736,1375222271,FR
+1375222272,1375222527,GF
+1375222528,1375222783,FR
+1375222784,1375223039,GF
+1375223040,1375223295,FR
+1375223296,1375223807,GF
+1375223808,1375230207,MQ
1375230208,1375230463,FR
-1375230464,1375240191,MQ
-1375240192,1375256575,GP
+1375230464,1375235071,MQ
+1375235072,1375235327,FR
+1375235328,1375235583,MQ
+1375235584,1375236095,FR
+1375236096,1375240191,MQ
+1375240192,1375241215,GP
+1375241216,1375241471,FR
+1375241472,1375256575,GP
1375256576,1375272959,RE
1375272960,1375731711,FR
1375731712,1378877439,GB
@@ -34953,7 +40494,9 @@
1382139648,1382140159,GB
1382140160,1382141951,RU
1382141952,1382146047,SY
-1382146048,1382152191,HK
+1382146048,1382147391,HK
+1382147392,1382147407,RU
+1382147408,1382152191,HK
1382152192,1382154239,IR
1382154240,1382170623,FR
1382170624,1382181439,DE
@@ -35038,9 +40581,7 @@
1383194624,1383202815,GB
1383202816,1383211007,RU
1383211008,1383219199,CY
-1383219200,1383226207,AL
-1383226208,1383226239,RS
-1383226240,1383227391,AL
+1383219200,1383227391,AL
1383227392,1383243775,RU
1383243776,1383251967,YE
1383251968,1383260159,CZ
@@ -35104,7 +40645,9 @@
1383497728,1383505919,RU
1383505920,1383514111,SA
1383514112,1383522303,FI
-1383522304,1383523839,BG
+1383522304,1383523327,BG
+1383523328,1383523583,MT
+1383523584,1383523839,BG
1383523840,1383524095,GB
1383524096,1383524607,BG
1383524608,1383524863,BR
@@ -35228,8 +40771,9 @@
1385283584,1385286143,DE
1385286144,1385287679,GB
1385287680,1385287935,PH
-1385287936,1385291007,GB
-1385291008,1385291775,ZA
+1385287936,1385290751,GB
+1385290752,1385291663,ZA
+1385291664,1385291775,GB
1385291776,1385299967,TR
1385299968,1385303039,BG
1385303040,1385303295,HU
@@ -35247,7 +40791,19 @@
1385349120,1385357311,CH
1385357312,1385365503,PL
1385365504,1385373695,GB
-1385373696,1385381887,NO
+1385373696,1385381375,NO
+1385381376,1385381509,DK
+1385381510,1385381510,NO
+1385381511,1385381541,DK
+1385381542,1385381542,NO
+1385381543,1385381553,DK
+1385381554,1385381554,NO
+1385381555,1385381557,DK
+1385381558,1385381558,NO
+1385381559,1385381615,DK
+1385381616,1385381623,NO
+1385381624,1385381631,DK
+1385381632,1385381887,NO
1385381888,1385398271,RU
1385398272,1385406463,BG
1385406464,1385414655,EE
@@ -35382,9 +40938,7 @@
1386553088,1386610687,DE
1386610688,1386676223,IL
1386676224,1386741759,SA
-1386741760,1387249663,NL
-1387249664,1387250687,BE
-1387250688,1387331583,NL
+1386741760,1387331583,NL
1387331584,1387397119,PL
1387397120,1387462655,OM
1387462656,1387528191,RU
@@ -35413,9 +40967,7 @@
1388445696,1388453887,AZ
1388453888,1388462079,BH
1388462080,1388470271,ES
-1388470272,1388473231,DE
-1388473232,1388473247,NL
-1388473248,1388473263,DE
+1388470272,1388473263,DE
1388473264,1388473279,NL
1388473280,1388478463,DE
1388478464,1388486655,AT
@@ -35467,7 +41019,8 @@
1388581120,1388583167,FR
1388583168,1388583423,DZ
1388583424,1388584959,FR
-1388587008,1388589823,GB
+1388587456,1388587471,GB
+1388589056,1388589823,GB
1388591104,1388591359,AU
1388591616,1388591631,US
1388591648,1388591663,US
@@ -35524,26 +41077,26 @@
1388716032,1388724223,ES
1388724224,1388732415,DE
1388732416,1388740607,ES
-1388740608,1388741887,GB
-1388741888,1388742143,IE
-1388742144,1388743679,GB
+1388740608,1388743679,GB
1388743680,1388744191,IE
-1388744192,1388744959,GB
-1388744960,1388745727,IE
+1388744192,1388744703,GB
+1388744704,1388745727,IE
1388745728,1388746207,GB
1388746208,1388746223,IE
-1388746224,1388746495,GB
-1388746496,1388746559,IE
-1388746560,1388746751,GB
+1388746224,1388746751,GB
1388746752,1388748799,IE
1388748800,1388756991,RU
1388756992,1388765183,DE
1388765184,1388773375,GB
1388773376,1388781567,NO
1388781568,1388789759,ES
-1388789760,1388794943,NL
+1388789760,1388789839,NL
+1388789840,1388789847,GB
+1388789848,1388794943,NL
1388794944,1388794959,GB
-1388794960,1388796679,NL
+1388794960,1388795999,NL
+1388796000,1388796031,GB
+1388796032,1388796679,NL
1388796680,1388796687,GB
1388796688,1388797951,NL
1388797952,1388806143,RU
@@ -35566,15 +41119,10 @@
1388813312,1388813823,CH
1388813824,1388814079,DE
1388814080,1388814335,CH
-1388814336,1388816383,FI
-1388816384,1388819455,AX
-1388819456,1388819967,FI
-1388819968,1388820479,AX
+1388814336,1388820479,AX
1388820480,1388822527,FI
-1388822528,1388826879,AM
-1388826880,1388827391,IQ
-1388827392,1388827647,AM
-1388827648,1388828671,IQ
+1388822528,1388826623,AM
+1388826624,1388828671,IQ
1388828672,1388829695,AM
1388829696,1388830719,IQ
1388830720,1388838911,FI
@@ -35597,11 +41145,7 @@
1389203456,1389211647,DE
1389211648,1389212672,AE
1389212673,1389218303,DE
-1389218304,1389218815,AE
-1389218816,1389219839,AF
-1389219840,1389228415,AE
-1389228416,1389228479,LB
-1389228480,1389232127,AE
+1389218304,1389232127,AE
1389232128,1389264895,DE
1389264896,1389265151,TZ
1389265152,1389266943,GB
@@ -35661,10 +41205,9 @@
1389814272,1389814527,DE
1389814528,1389815295,US
1389815296,1389815551,DE
-1389815552,1389817599,US
-1389817600,1389817603,SE
+1389815552,1389817603,US
1389817604,1389817604,NO
-1389817605,1389817855,SE
+1389817605,1389817855,US
1389817856,1389819007,GB
1389819008,1389819023,DE
1389819024,1389819039,FR
@@ -35794,6 +41337,8 @@
1401460736,1401462783,PL
1401462784,1401464831,FR
1401464832,1401466879,IE
+1401466880,1401467903,ES
+1401467904,1401468927,US
1401468928,1401470975,ES
1401470976,1401473023,NL
1401473024,1401475071,CZ
@@ -35807,7 +41352,11 @@
1401487828,1401487828,ES
1401487829,1401487834,GB
1401487835,1401487835,BE
-1401487836,1401489407,GB
+1401487836,1401488895,GB
+1401488896,1401489146,DK
+1401489147,1401489147,CH
+1401489148,1401489151,DK
+1401489152,1401489407,GB
1401489408,1401491455,SE
1401491456,1401493503,NL
1401493504,1401495551,CH
@@ -35882,10 +41431,7 @@
1401833472,1401835519,FI
1401835520,1401837567,DE
1401837568,1401839615,CH
-1401839616,1401841407,NO
-1401841408,1401841483,GB
-1401841484,1401841484,NO
-1401841485,1401841663,GB
+1401839616,1401841663,NO
1401841664,1401843711,UA
1401843712,1401847807,PL
1401847808,1401849855,DE
@@ -35949,8 +41495,8 @@
1401978880,1401995263,PT
1401995264,1402011647,CH
1402011648,1402018815,SE
-1402018816,1402019327,FI
-1402019328,1402027263,SE
+1402018816,1402019839,FI
+1402019840,1402027263,SE
1402027264,1402027519,NO
1402027520,1402028031,SE
1402028032,1402044415,FR
@@ -35963,10 +41509,12 @@
1402159104,1402175487,IT
1402175488,1402191871,IE
1402191872,1402193919,IR
-1402193920,1402196991,SC
+1402193920,1402194943,SC
+1402194944,1402195967,IR
+1402195968,1402196991,SC
1402196992,1402200063,IR
-1402200064,1402202111,SC
-1402202112,1402208255,IR
+1402200064,1402201087,SC
+1402201088,1402208255,IR
1402208256,1402224639,CZ
1402224640,1402241023,BG
1402241024,1402257407,GB
@@ -35993,8 +41541,7 @@
1402396672,1402397695,HK
1402397696,1402398719,RU
1402398720,1402399743,NL
-1402399744,1402399999,PL
-1402400000,1402400767,RO
+1402399744,1402400767,RO
1402400768,1402401791,ES
1402401792,1402402815,FR
1402402816,1402404863,GB
@@ -36092,7 +41639,9 @@
1403445248,1403447295,RU
1403447296,1403448575,MD
1403448576,1403461631,RU
-1403461632,1403469823,FR
+1403461632,1403461887,FR
+1403461888,1403462015,US
+1403462016,1403469823,FR
1403469824,1403486207,RU
1403486208,1403494399,FR
1403494400,1403502591,GB
@@ -36193,8 +41742,8 @@
1404227072,1404227583,LV
1404227584,1404232703,SE
1404232704,1404233215,LV
-1404233216,1404233727,SE
-1404233728,1404239871,HR
+1404233216,1404234751,SE
+1404234752,1404239871,HR
1404239872,1404242687,LT
1404242688,1404242751,SE
1404242752,1404272639,LT
@@ -36263,26 +41812,20 @@
1405091840,1405812735,FR
1405812736,1405823999,MQ
1405824000,1405824255,FR
-1405824256,1405853439,MQ
-1405853440,1405853695,FR
-1405853696,1405854719,MQ
+1405824256,1405828095,MQ
+1405828096,1405828351,FR
+1405828352,1405833727,MQ
+1405833728,1405834239,FR
+1405834240,1405836543,MQ
+1405836544,1405836799,FR
+1405836800,1405843455,MQ
+1405843456,1405843711,FR
+1405843712,1405854719,MQ
1405854720,1405854975,FR
-1405854976,1405855231,MQ
-1405855232,1405855487,FR
-1405855488,1405857535,MQ
-1405857536,1405857791,FR
-1405857792,1405864959,MQ
+1405854976,1405864959,MQ
1405864960,1405865471,FR
-1405865472,1405865727,MQ
-1405865728,1405865983,FR
-1405865984,1405866495,MQ
-1405866496,1405867007,FR
-1405867008,1405869823,MQ
-1405869824,1405870079,FR
-1405870080,1405878271,MQ
-1405878272,1406050303,FR
-1406050304,1406051327,MQ
-1406051328,1406066687,FR
+1405865472,1405878271,MQ
+1405878272,1406066687,FR
1406066688,1406067199,GP
1406067200,1406140415,FR
1406140416,1406205951,CZ
@@ -36294,7 +41837,9 @@
1406402560,1406468095,GR
1406468096,1406533631,ES
1406533632,1406599167,FR
-1406599168,1406664703,AT
+1406599168,1406653055,AT
+1406653056,1406653439,DE
+1406653440,1406664703,AT
1406664704,1406672895,FI
1406672896,1406681087,HU
1406681088,1406689279,GB
@@ -36316,8 +41861,9 @@
1406793088,1406793088,FR
1406793089,1406794751,ES
1406794752,1406795775,NL
-1406795776,1406797823,IM
-1406797824,1406802943,GB
+1406795776,1406796287,GB
+1406796288,1406797311,IM
+1406797312,1406802943,GB
1406802944,1406803967,IM
1406803968,1406812159,DE
1406812160,1406820351,SE
@@ -36379,11 +41925,9 @@
1407520536,1407520543,NG
1407520544,1407520623,GB
1407520624,1407520631,NG
-1407520632,1407543935,GB
-1407543936,1407543943,NG
-1407543944,1407544015,GB
-1407544016,1407544023,NG
-1407544024,1407549439,GB
+1407520632,1407523540,GB
+1407523541,1407523541,SA
+1407523542,1407549439,GB
1407549440,1407582207,RU
1407582208,1407614975,PL
1407614976,1407680511,ES
@@ -36466,9 +42010,7 @@
1409548288,1409810431,FR
1409810432,1409941503,GB
1409941504,1410007039,PL
-1410007040,1410043903,DE
-1410043904,1410045951,US
-1410045952,1410047999,DE
+1410007040,1410047999,DE
1410048000,1410050047,KE
1410050048,1410072575,DE
1410072576,1410203647,GB
@@ -36486,9 +42028,7 @@
1410223392,1410223423,ES
1410223424,1410223591,FR
1410223592,1410223599,ES
-1410223600,1410225151,FR
-1410225152,1410226175,DE
-1410226176,1410269183,FR
+1410223600,1410269183,FR
1410269184,1410303999,LT
1410304000,1410306047,LV
1410306048,1410318335,LT
@@ -36645,7 +42185,7 @@
1411874816,1411876863,RU
1411878912,1411880959,CH
1411880960,1411881215,DE
-1411881216,1411883007,GB
+1411881216,1411881471,GB
1411883008,1411887103,PL
1411887104,1411889151,ES
1411889152,1411891199,IT
@@ -36712,24 +42252,131 @@
1412743168,1412775935,NO
1412775936,1412792319,NL
1412792320,1412793343,US
-1412793856,1412795135,US
-1412795392,1412795903,US
-1412796928,1412800511,US
+1412793856,1412794907,US
+1412794908,1412794911,BE
+1412794912,1412794916,US
+1412794917,1412794918,BE
+1412794919,1412794923,US
+1412794924,1412794927,BE
+1412794928,1412794931,US
+1412794932,1412794935,BE
+1412794936,1412794939,US
+1412794940,1412794943,BE
+1412794944,1412794947,US
+1412794948,1412794951,BE
+1412794952,1412794955,US
+1412794956,1412794959,BE
+1412794960,1412794963,US
+1412794964,1412794967,BE
+1412794968,1412794971,US
+1412794972,1412794972,BE
+1412794973,1412795135,US
+1412795392,1412795395,US
+1412795396,1412795399,DE
+1412795400,1412795403,US
+1412795404,1412795407,DE
+1412795408,1412795411,US
+1412795412,1412795415,DE
+1412795416,1412795419,US
+1412795420,1412795423,DE
+1412795424,1412795427,US
+1412795428,1412795431,DE
+1412795432,1412795435,US
+1412795436,1412795439,DE
+1412795440,1412795443,US
+1412795444,1412795447,DE
+1412795448,1412795451,US
+1412795452,1412795455,DE
+1412795456,1412795459,US
+1412795460,1412795463,DE
+1412795464,1412795467,US
+1412795468,1412795471,DE
+1412795472,1412795475,US
+1412795476,1412795479,DE
+1412795480,1412795483,US
+1412795484,1412795487,DE
+1412795488,1412795491,US
+1412795492,1412795495,DE
+1412795496,1412795499,US
+1412795500,1412795503,DE
+1412795504,1412795507,US
+1412795508,1412795511,DE
+1412795512,1412795515,US
+1412795516,1412795519,DE
+1412795520,1412795523,US
+1412795524,1412795527,DE
+1412795528,1412795531,US
+1412795532,1412795535,DE
+1412795536,1412795539,US
+1412795540,1412795543,DE
+1412795544,1412795547,US
+1412795548,1412795551,DE
+1412795552,1412795555,US
+1412795556,1412795559,DE
+1412795560,1412795563,US
+1412795564,1412795567,DE
+1412795568,1412795571,US
+1412795572,1412795574,DE
+1412795575,1412795903,US
+1412796221,1412796222,DE
+1412796228,1412796231,DE
+1412796236,1412796239,DE
+1412796244,1412796247,DE
+1412796253,1412796255,DE
+1412796260,1412796263,DE
+1412796268,1412796268,DE
+1412796928,1412796960,US
+1412796961,1412796967,DE
+1412796968,1412796968,US
+1412796969,1412796972,DE
+1412796973,1412797187,US
+1412797188,1412797191,FR
+1412797192,1412797195,US
+1412797196,1412797199,FR
+1412797200,1412797203,US
+1412797204,1412797207,FR
+1412797208,1412797211,US
+1412797212,1412797215,FR
+1412797216,1412797219,US
+1412797220,1412797223,FR
+1412797224,1412797227,US
+1412797228,1412797231,FR
+1412797232,1412797235,US
+1412797236,1412797236,FR
+1412797237,1412797237,US
+1412797238,1412797239,FR
+1412797240,1412797243,US
+1412797244,1412797247,FR
+1412797248,1412797251,US
+1412797252,1412797254,FR
+1412797255,1412797259,US
+1412797260,1412797263,FR
+1412797264,1412797267,US
+1412797268,1412797271,FR
+1412797272,1412797275,US
+1412797276,1412797279,FR
+1412797280,1412797283,US
+1412797284,1412797284,FR
+1412797285,1412797285,US
+1412797286,1412797286,FR
+1412797287,1412800511,US
1412801536,1412804607,US
1412804864,1412805631,US
+1412806656,1412808703,US
1412808704,1412825087,RU
1412825088,1412826111,TR
1412826112,1412828159,RU
1412828160,1412829183,TR
1412829184,1412830207,RU
-1412830208,1412831231,DE
+1412830208,1412831231,US
1412831232,1412832255,ES
1412832256,1412832767,RU
1412832768,1412833023,SL
1412833024,1412835327,RU
1412835328,1412836351,NL
1412836352,1412837375,RU
-1412837376,1412838399,DE
+1412837376,1412838143,DE
+1412838144,1412838399,NL
1412838400,1412839423,RU
1412839424,1412839935,CN
1412839936,1412840191,GB
@@ -36768,11 +42415,11 @@
1415772672,1416101887,FR
1416101888,1416364031,NL
1416364032,1416626175,IL
-1416626176,1416891391,AT
-1416891392,1416894463,NL
+1416626176,1416888319,AT
+1416888320,1416894463,NL
1416894464,1416904703,AT
1416941568,1416943615,CH
-1416944640,1416945663,CZ
+1416944640,1416945663,NL
1416953856,1417019391,RO
1417019392,1417150463,DE
1417150464,1417674751,ES
@@ -36828,9 +42475,9 @@
1424591663,1424592895,FR
1424592896,1424593119,GB
1424593120,1424593127,FR
-1424593128,1424595726,GB
-1424595727,1424595727,IT
-1424595728,1424597069,GB
+1424593128,1424594943,GB
+1424594944,1424596991,IT
+1424596992,1424597069,GB
1424597070,1424597070,CZ
1424597071,1424599039,GB
1424599040,1424601087,FR
@@ -36846,13 +42493,11 @@
1424604976,1424604991,NL
1424604992,1424607743,GB
1424607744,1424607775,DE
-1424607776,1424608083,GB
-1424608084,1424608087,FR
-1424608088,1424608127,GB
-1424608128,1424608191,FR
-1424608192,1424608511,GB
-1424608512,1424608639,ES
-1424608640,1424608671,GB
+1424607776,1424607999,GB
+1424608000,1424608255,FR
+1424608256,1424608579,GB
+1424608580,1424608580,ES
+1424608581,1424608671,GB
1424608672,1424608687,ES
1424608688,1424608743,GB
1424608744,1424608751,ES
@@ -37001,7 +42646,7 @@
1425823744,1425824767,PT
1425824768,1425825791,TR
1425825792,1425826815,IL
-1425826816,1425827839,JP
+1425826816,1425827839,FR
1425827840,1425828863,CH
1425828864,1425829887,IE
1425829888,1425830911,FR
@@ -37021,11 +42666,10 @@
1425967104,1425967615,GB
1425967872,1425968127,GB
1425968640,1425969151,GB
-1425973248,1425975295,GB
+1425974272,1425974783,GB
1425975808,1425976063,FR
1425977344,1425980415,FR
1425980416,1425980671,IQ
-1425980672,1425981439,FR
1425981440,1425997823,RU
1425997824,1426014207,MT
1426014208,1426030591,DK
@@ -37046,7 +42690,8 @@
1426632704,1426633727,SE
1426633728,1426634751,DE
1426634752,1426635775,RU
-1426635776,1426636287,LK
+1426635776,1426636031,FR
+1426636032,1426636287,IT
1426636288,1426636799,VN
1426636800,1426653183,GB
1426653184,1426669567,RO
@@ -37190,7 +42835,9 @@
1432043520,1432051711,ES
1432051712,1432054015,RU
1432054016,1432054271,RO
-1432054272,1432056831,RU
+1432054272,1432054527,RU
+1432054528,1432055807,RO
+1432055808,1432056831,RU
1432056832,1432057343,RO
1432057344,1432059903,RU
1432059904,1432068095,BG
@@ -37242,11 +42889,7 @@
1432313856,1432322047,GB
1432322048,1432338431,RU
1432338432,1432346623,FR
-1432346624,1432351999,TR
-1432352000,1432352767,NL
-1432352768,1432354047,TR
-1432354048,1432354815,NL
-1432354816,1433353473,TR
+1432346624,1433353473,TR
1433353474,1433353474,GE
1433353475,1433403391,TR
1433403392,1433408831,ES
@@ -37291,7 +42934,7 @@
1433608192,1433608447,TR
1433608448,1433608703,NL
1433608704,1433608959,GB
-1433608960,1433609215,CZ
+1433608960,1433609215,PL
1433609216,1433609471,GB
1433609472,1433609727,SE
1433609728,1433610239,IT
@@ -37301,7 +42944,11 @@
1433611776,1433612031,GB
1433612032,1433612287,IL
1433612288,1433614335,GB
-1433614336,1433615359,DE
+1433614336,1433614847,DE
+1433614848,1433615027,HU
+1433615028,1433615028,DE
+1433615029,1433615103,HU
+1433615104,1433615359,DE
1433615360,1433615615,FR
1433615616,1433615871,BE
1433615872,1433616127,CH
@@ -37342,7 +42989,7 @@
1433789440,1433790463,NO
1433790464,1433791487,RU
1433791488,1433792511,TR
-1433792512,1433793535,DE
+1433792512,1433793535,US
1433793536,1433795583,ES
1433795584,1433796607,DE
1433796608,1433804799,GB
@@ -37570,7 +43217,8 @@
1438578688,1438579967,DE
1438579968,1438580095,NZ
1438580096,1438580223,AU
-1438580224,1438580735,DE
+1438580224,1438580479,US
+1438580480,1438580735,DE
1438580736,1438646271,DK
1438646272,1438662655,RU
1438662656,1438679039,ES
@@ -37602,7 +43250,9 @@
1438877184,1438877951,SA
1438877952,1438878207,LB
1438878208,1438892031,SA
-1438892032,1438908415,CH
+1438892032,1438900607,CH
+1438900608,1438900735,DE
+1438900736,1438908415,CH
1438908416,1438924799,GR
1438924800,1438941183,NO
1438941184,1438957567,BG
@@ -37705,9 +43355,7 @@
1439381504,1439382527,MX
1439382528,1439383551,US
1439383552,1439399935,FR
-1439399936,1439405567,DK
-1439405568,1439405695,DE
-1439405696,1439432703,DK
+1439399936,1439432703,DK
1439432704,1439437823,RO
1439437824,1439438335,FR
1439438336,1439438847,RO
@@ -37776,18 +43424,17 @@
1439495680,1439496959,RO
1439496960,1439497215,GB
1439497216,1439498239,RO
-1439498240,1439502335,GB
-1439502336,1439506431,DE
-1439506432,1439507455,GB
-1439507456,1439513599,DE
+1439498240,1439504383,GB
+1439504384,1439506431,DE
+1439506432,1439508479,GB
+1439508480,1439513599,DE
1439513600,1439514623,GB
1439514624,1439516671,IT
1439516672,1439518719,GB
-1439518720,1439527935,DE
-1439527936,1439531007,GB
+1439518720,1439522815,DE
+1439522816,1439531007,GB
1439531008,1439534079,DE
-1439534080,1439535103,GB
-1439535104,1439536127,IT
+1439534080,1439536127,GB
1439536128,1439537151,DE
1439537152,1439538175,IT
1439538176,1439539199,GB
@@ -37811,7 +43458,12 @@
1440322048,1440322559,ES
1440322560,1440323071,BG
1440323072,1440325631,ES
-1440325632,1440350207,BG
+1440325632,1440326655,CH
+1440326656,1440328703,BG
+1440328704,1440329727,CH
+1440329728,1440331775,BG
+1440331776,1440332799,CH
+1440332800,1440350207,BG
1440350208,1440382975,CH
1440382976,1440415743,DK
1440415744,1440448511,ES
@@ -37856,9 +43508,7 @@
1441423360,1441431551,RU
1441431552,1441439743,GB
1441439744,1441447935,LV
-1441447936,1441449599,BE
-1441449600,1441449727,DE
-1441449728,1441456127,BE
+1441447936,1441456127,BE
1441456128,1441460735,NL
1441460736,1441462271,EE
1441462272,1441464319,PL
@@ -37968,9 +43618,7 @@
1446576128,1446608895,IR
1446608896,1446641663,BY
1446641664,1446674431,SI
-1446674432,1446704127,DK
-1446704128,1446705151,ES
-1446705152,1446707199,DK
+1446674432,1446707199,DK
1446707200,1446739967,AT
1446739968,1446772735,HU
1446772736,1446805503,SA
@@ -37996,7 +43644,7 @@
1446920192,1446936575,RU
1446936576,1446952959,NO
1446952960,1446969343,QA
-1446969344,1446980351,GB
+1446969344,1446980095,GB
1446980608,1446985727,GB
1446985728,1447010303,PL
1447010304,1447018495,LV
@@ -38005,7 +43653,9 @@
1448083456,1449132031,NL
1449132032,1449394175,AE
1449394176,1449459711,LT
-1449459712,1449525247,HU
+1449459712,1449500031,HU
+1449500032,1449500159,AE
+1449500160,1449525247,HU
1449525248,1449590783,RU
1449590784,1449656319,DE
1449656320,1449657087,GB
@@ -38083,7 +43733,7 @@
1449738240,1449742335,RO
1449742336,1449744383,MD
1449744384,1449748479,RO
-1449748480,1449749503,US
+1449748480,1449749503,GB
1449749504,1449750527,RO
1449750528,1449752575,SE
1449752576,1449754623,RO
@@ -38364,10 +44014,9 @@
1466588786,1466588786,FR
1466588787,1466589183,DE
1466589184,1466590207,FR
-1466590208,1466591999,GB
-1466592000,1466613759,DE
-1466613760,1466614783,ES
-1466614784,1466615807,DE
+1466590208,1466591231,DE
+1466591232,1466591999,GB
+1466592000,1466615807,DE
1466615808,1466616575,GB
1466616576,1466630143,DE
1466630144,1466695679,IR
@@ -38404,14 +44053,19 @@
1467473920,1467482111,RU
1467482112,1467484927,BG
1467484928,1467485183,IL
-1467485184,1467582463,BG
-1467582464,1467584511,GB
-1467584512,1467596799,BG
+1467485184,1467525119,BG
+1467525120,1467527167,SA
+1467527168,1467582463,BG
+1467582464,1467584511,US
+1467584512,1467592703,BG
+1467592704,1467596799,SA
1467596800,1467600895,DE
-1467600896,1467602943,CA
+1467600896,1467601919,CA
+1467601920,1467602943,GB
1467602944,1467604991,BG
1467604992,1467609087,DE
-1467609088,1467613183,BG
+1467609088,1467611135,SA
+1467611136,1467613183,BG
1467613184,1467744255,DE
1467744256,1467777023,GB
1467777024,1467875327,ES
@@ -38490,9 +44144,7 @@
1475151872,1475153919,BE
1475153920,1475155967,GB
1475155968,1475158015,NL
-1475158016,1475158527,IS
-1475158528,1475159295,GB
-1475159296,1475160063,IS
+1475158016,1475160063,IS
1475160064,1475162111,RU
1475162112,1475163135,GB
1475163136,1475164159,DE
@@ -38536,7 +44188,7 @@
1475244032,1475245823,DE
1475245824,1475246079,RU
1475246080,1475248127,CH
-1475248128,1475250175,JO
+1475248128,1475250175,GB
1475250176,1475252223,DE
1475252224,1475254271,FR
1475254272,1475256319,UA
@@ -38572,9 +44224,9 @@
1475319808,1475321855,BG
1475321856,1475323903,KZ
1475323904,1475327999,PL
-1475328000,1475329095,NL
+1475328000,1475329095,DE
1475329096,1475329096,CH
-1475329097,1475330047,NL
+1475329097,1475330047,DE
1475330048,1475332095,PL
1475332096,1475336191,CH
1475336192,1475338239,PL
@@ -38604,13 +44256,9 @@
1475575808,1475592191,AT
1475592192,1475608575,GB
1475608576,1475624959,RU
-1475624960,1475639559,JE
-1475639560,1475639567,GB
-1475639568,1475639583,JE
-1475639584,1475639591,GB
-1475639592,1475639695,JE
-1475639696,1475639703,GB
-1475639704,1475641343,JE
+1475624960,1475637471,JE
+1475637472,1475637479,GB
+1475637480,1475641343,JE
1475641344,1475657727,UA
1475657728,1475674111,SK
1475674112,1475690495,DE
@@ -38619,11 +44267,29 @@
1475727360,1475727391,FI
1475727392,1475727775,GB
1475727776,1475727871,FI
-1475727872,1475728895,GB
+1475727872,1475728387,GB
+1475728388,1475728391,PL
+1475728392,1475728395,GB
+1475728396,1475728399,PL
+1475728400,1475728403,GB
+1475728404,1475728407,PL
+1475728408,1475728411,GB
+1475728412,1475728415,PL
+1475728416,1475728419,GB
+1475728420,1475728423,PL
+1475728424,1475728427,GB
+1475728428,1475728431,PL
+1475728432,1475728435,GB
+1475728436,1475728439,PL
+1475728440,1475728443,GB
+1475728444,1475728447,PL
+1475728448,1475728451,GB
+1475728452,1475728455,PL
+1475728456,1475728459,GB
+1475728460,1475728460,PL
+1475728461,1475728895,GB
1475728896,1475729151,DE
-1475729152,1475729407,GB
-1475729408,1475729535,UA
-1475729536,1475731007,GB
+1475729152,1475731007,GB
1475731008,1475731071,UA
1475731072,1475735485,GB
1475735486,1475735486,RU
@@ -38645,14 +44311,10 @@
1475843072,1475844095,MD
1475844096,1475845119,UA
1475845120,1475846143,RU
-1475846144,1475847167,KH
-1475847168,1475851263,IR
-1475851264,1475851903,AE
-1475851904,1475851967,IR
-1475851968,1475852799,AE
-1475852800,1475852831,IR
-1475852832,1475853055,AE
-1475853056,1475854335,IR
+1475846144,1475848191,KH
+1475848192,1475851263,IR
+1475851264,1475852287,AE
+1475852288,1475854335,IR
1475854336,1475862527,AT
1475862528,1475864575,FR
1475864576,1475866623,IT
@@ -38688,8 +44350,8 @@
1476064512,1476067327,RU
1476067328,1476075519,TR
1476075520,1476083711,NL
-1476083712,1476087807,MD
-1476087808,1476100095,RU
+1476083712,1476085759,MD
+1476085760,1476100095,RU
1476100096,1476108287,IR
1476108288,1476116479,RU
1476116480,1476124671,SE
@@ -38786,9 +44448,7 @@
1481924608,1481932799,SA
1481932800,1481934847,GB
1481934848,1481936895,DE
-1481936896,1481937183,FR
-1481937184,1481937199,NL
-1481937200,1481937567,FR
+1481936896,1481937567,FR
1481937568,1481937571,PA
1481937572,1481938943,FR
1481938944,1481940427,NL
@@ -38923,21 +44583,25 @@
1489436672,1489502207,PL
1489502208,1489534975,SI
1489534976,1489567743,RU
-1489567744,1489600511,BH
+1489567744,1489589247,BH
+1489589248,1489589375,SA
+1489589376,1489589503,BH
+1489589504,1489590271,SA
+1489590272,1489594111,BH
+1489594112,1489594367,IT
+1489594368,1489600511,BH
1489600512,1489633279,RU
1489633280,1489634303,FR
1489634304,1489635327,IT
1489635840,1489636863,FR
-1489637120,1489637631,FR
-1489638144,1489641471,FR
+1489637120,1489641471,FR
1489641472,1489641599,PT
1489641600,1489641727,GR
1489641728,1489642495,FR
1489642752,1489644543,FR
1489644544,1489645055,IT
1489645824,1489646079,IT
-1489649664,1489650687,ZA
-1489651200,1489653759,FR
+1489649664,1489653759,FR
1489655296,1489655551,GR
1489655808,1489656831,NO
1489656832,1489657087,FI
@@ -39011,9 +44675,7 @@
1490059264,1490075647,DE
1490075648,1490092031,GB
1490092032,1490108415,DE
-1490108416,1490111743,MC
-1490111744,1490111871,GB
-1490111872,1490124799,MC
+1490108416,1490124799,MC
1490124800,1490141183,SA
1490141184,1490157567,HU
1490157568,1490173951,RU
@@ -39073,33 +44735,255 @@
1490534400,1490550783,DE
1490550784,1490616319,LT
1490616320,1490681855,DE
-1490681856,1490700287,ES
+1490681856,1490682879,RO
+1490682880,1490689023,ES
+1490689024,1490689279,NL
+1490689280,1490700287,ES
1490700288,1490701311,RU
1490701312,1490707455,ES
-1490707456,1490708479,CL
+1490707456,1490707711,FR
+1490707712,1490707967,IT
+1490707968,1490708479,CL
1490708480,1490709503,CO
1490709504,1490717695,ES
1490717696,1490718719,LB
1490718720,1490732031,ES
1490732032,1490733055,IT
-1490733056,1490741247,ES
+1490733056,1490734079,ES
+1490734080,1490734335,JP
+1490734336,1490741247,ES
1490741248,1490742271,CY
1490742272,1490746367,ES
1490746368,1490747391,PL
1490747392,1490812927,FR
1490812928,1490878463,PL
+1490878464,1490879487,DE
1490879488,1490880511,US
1490880512,1490881535,FR
+1490882394,1490882421,FR
+1490882424,1490882424,FR
+1490882438,1490882440,FR
+1490882442,1490882450,FR
1490885632,1490886655,US
+1490891236,1490891239,GB
+1490891244,1490891247,GB
+1490891252,1490891253,GB
+1490891524,1490891524,GB
+1490891526,1490891527,GB
+1490891532,1490891535,GB
+1490891540,1490891542,GB
+1490891548,1490891550,GB
+1490891556,1490891556,GB
+1490891558,1490891558,GB
+1490891564,1490891567,GB
+1490891572,1490891572,GB
+1490891574,1490891575,GB
+1490891580,1490891581,GB
+1490891583,1490891583,GB
+1490891588,1490891591,GB
+1490891598,1490891599,GB
+1490891604,1490891605,GB
+1490891607,1490891607,GB
+1490891613,1490891615,GB
+1490891621,1490891623,GB
+1490891628,1490891631,GB
+1490891636,1490891639,GB
+1490891652,1490891655,GB
+1490891660,1490891663,GB
+1490891668,1490891671,GB
+1490891677,1490891679,GB
+1490891684,1490891687,GB
+1490891717,1490891719,GB
+1490891724,1490891727,GB
+1490891732,1490891733,GB
+1490892127,1490892127,ES
+1490892132,1490892133,ES
+1490892135,1490892135,ES
+1490892140,1490892143,ES
+1490892148,1490892151,ES
+1490892156,1490892156,ES
+1490892158,1490892159,ES
+1490892164,1490892166,ES
+1490892172,1490892175,ES
+1490892180,1490892183,ES
+1490892188,1490892189,ES
+1490892191,1490892191,ES
+1490892196,1490892199,ES
+1490892205,1490892207,ES
+1490892212,1490892215,ES
+1490892220,1490892223,ES
+1490892228,1490892231,ES
+1490892236,1490892239,ES
+1490892244,1490892244,ES
+1490892246,1490892247,ES
+1490892252,1490892252,ES
+1490892254,1490892255,ES
+1490892260,1490892260,ES
+1490899821,1490899834,FR
+1490899836,1490899837,FR
+1490899839,1490899842,FR
+1490899844,1490899848,FR
+1490899850,1490899857,FR
+1490900751,1490900751,GB
+1490900756,1490900759,GB
+1490900764,1490900767,GB
+1490900772,1490900775,GB
+1490900780,1490900783,GB
+1490901351,1490901351,IE
+1490901414,1490901415,IE
+1490901428,1490901431,IE
+1490901436,1490901439,IE
+1490901444,1490901447,IE
+1490901452,1490901452,IE
+1490901454,1490901455,IE
+1490901460,1490901463,IE
+1490901468,1490901471,IE
+1490901476,1490901479,IE
+1490901484,1490901487,IE
+1490901492,1490901493,IE
+1490901556,1490901559,ES
+1490901564,1490901567,ES
+1490901572,1490901575,ES
+1490901636,1490901639,ES
+1490901644,1490901647,ES
+1490901652,1490901655,ES
+1490901660,1490901663,ES
+1490901668,1490901671,ES
1490904064,1490905087,US
+1490907759,1490907759,FR
+1490907764,1490907766,FR
+1490907772,1490907773,FR
+1490907775,1490907775,FR
+1490907780,1490907783,FR
+1490907788,1490907791,FR
+1490907796,1490907799,FR
+1490907804,1490907807,FR
+1490907812,1490907815,FR
+1490907820,1490907823,FR
+1490907828,1490907831,FR
+1490907836,1490907839,FR
+1490907844,1490907847,FR
+1490907852,1490907855,FR
+1490907860,1490907863,FR
+1490907868,1490907871,FR
+1490907876,1490907878,FR
+1490907908,1490907911,FR
+1490907916,1490907919,FR
+1490907924,1490907927,FR
+1490907932,1490907935,FR
+1490907940,1490907943,FR
+1490907948,1490907951,FR
+1490907956,1490907957,FR
+1490907959,1490907959,FR
+1490907964,1490907967,FR
+1490907972,1490907975,FR
+1490907980,1490907983,FR
+1490907988,1490907988,FR
+1490907990,1490907991,FR
+1490907996,1490907999,FR
+1490908004,1490908004,FR
+1490908006,1490908006,FR
+1490908036,1490908039,FR
+1490908044,1490908047,FR
+1490908052,1490908055,FR
+1490908060,1490908063,FR
+1490908068,1490908071,FR
+1490908076,1490908079,FR
+1490908084,1490908087,FR
+1490908764,1490908764,DE
+1490908767,1490908767,DE
+1490908772,1490908775,DE
+1490908780,1490908783,DE
+1490908788,1490908791,DE
+1490908796,1490908799,DE
+1490908804,1490908807,DE
+1490908812,1490908813,DE
+1490908815,1490908815,DE
+1490908820,1490908821,DE
+1490908823,1490908823,DE
+1490908828,1490908831,DE
+1490908836,1490908837,DE
+1490908842,1490908845,DE
+1490908851,1490908853,DE
+1490908858,1490908861,DE
+1490908866,1490908869,DE
+1490908874,1490908877,DE
+1490908882,1490908883,DE
+1490908885,1490908885,DE
+1490908890,1490908891,DE
1490909184,1490910207,US
+1490912644,1490912647,RU
+1490912652,1490912655,RU
+1490912660,1490912663,RU
+1490912669,1490912671,RU
1490913280,1490915327,US
1490915328,1490917375,IT
1490917376,1490919423,IL
1490927616,1490929663,FR
1490931712,1490931967,DE
1490931968,1490932223,PL
-1490932224,1490933759,DE
+1490932224,1490933067,DE
+1490933068,1490933071,ES
+1490933072,1490933075,DE
+1490933076,1490933079,ES
+1490933080,1490933083,DE
+1490933084,1490933087,ES
+1490933088,1490933091,DE
+1490933092,1490933095,ES
+1490933096,1490933100,DE
+1490933101,1490933103,ES
+1490933104,1490933107,DE
+1490933108,1490933108,ES
+1490933109,1490933759,DE
+1490933764,1490933767,SE
+1490933772,1490933773,SE
+1490933775,1490933775,SE
+1490933780,1490933783,SE
+1490933788,1490933791,SE
+1490933796,1490933799,SE
+1490933804,1490933807,SE
+1490933812,1490933815,SE
+1490933820,1490933823,SE
+1490933828,1490933831,SE
+1490933836,1490933839,SE
+1490933844,1490933847,SE
+1490933852,1490933855,SE
+1490933860,1490933863,SE
+1490933868,1490933871,SE
+1490933876,1490933878,SE
+1490933884,1490933887,SE
+1490933892,1490933895,SE
+1490933900,1490933903,SE
+1490934164,1490934176,AE
+1490934276,1490934279,DE
+1490934284,1490934287,DE
+1490934292,1490934295,DE
+1490934300,1490934303,DE
+1490934308,1490934308,DE
+1490935044,1490935047,DE
+1490935052,1490935055,DE
+1490935060,1490935063,DE
+1490935069,1490935071,DE
+1490935076,1490935079,DE
+1490935084,1490935085,DE
+1490935337,1490935340,IE
+1490935345,1490935348,IE
+1490935353,1490935356,IE
+1490935361,1490935364,IE
+1490935369,1490935372,IE
+1490935377,1490935377,IE
+1490935425,1490935428,IE
+1490935433,1490935436,IE
+1490935441,1490935442,IE
+1490935467,1490935470,IE
+1490935475,1490935478,IE
+1490935483,1490935486,IE
+1490935491,1490935494,IE
+1490935499,1490935502,IE
+1490935507,1490935510,IE
+1490935515,1490935518,IE
+1490935523,1490935526,IE
+1490935531,1490935534,IE
1490944000,1491075071,LT
1491075072,1493172223,TR
1493172224,1493303295,DE
@@ -39148,8 +45032,16 @@
1494441984,1494450175,UA
1494450176,1494458367,DK
1494458368,1494474751,RU
-1494474752,1494482943,DE
-1494482944,1494499327,RU
+1494474752,1494475199,DE
+1494475200,1494475215,CH
+1494475216,1494477471,DE
+1494477472,1494477503,IL
+1494477504,1494482943,DE
+1494482944,1494495231,RU
+1494495232,1494495487,KZ
+1494495488,1494495743,GB
+1494495744,1494496255,US
+1494496256,1494499327,RU
1494499328,1494507519,NL
1494507520,1494523903,RU
1494523904,1494532095,NL
@@ -39209,8 +45101,8 @@
1495056384,1495058431,RU
1495058432,1495060479,UA
1495060480,1495060991,GB
-1495060992,1495061503,US
-1495061504,1495062527,GB
+1495060992,1495061247,US
+1495061248,1495062527,GB
1495062528,1495064575,JO
1495064576,1495066623,PL
1495066624,1495068671,GB
@@ -39222,11 +45114,13 @@
1495139344,1495139347,GB
1495139376,1495139391,FR
1495140352,1495142399,FR
-1495144448,1495146495,FR
1495146752,1495147007,US
1495148544,1495150591,FR
1495150848,1495151103,GB
1495151616,1495153663,FR
+1495153664,1495153919,GB
+1495153920,1495154175,TR
+1495154176,1495154431,FR
1495154496,1495154527,IN
1495158784,1495159295,GB
1495160240,1495160255,FR
@@ -39285,8 +45179,12 @@
1495257088,1495259135,GB
1495259136,1495260159,MD
1495260160,1495261183,RU
-1495261184,1495261439,GB
-1495261440,1495263231,PT
+1495261184,1495261481,GB
+1495261482,1495261482,PT
+1495261483,1495261511,GB
+1495261512,1495261512,PT
+1495261513,1495261695,GB
+1495261696,1495263231,PT
1495263232,1495265279,GB
1495265280,1495267327,US
1495267328,1495269375,SE
@@ -39597,7 +45495,9 @@
1495589376,1495589887,IR
1495589888,1495590143,IT
1495590144,1495590655,RO
-1495590656,1495592959,US
+1495590656,1495590911,US
+1495590912,1495591935,DE
+1495591936,1495592959,US
1495592960,1495596031,RO
1495596032,1495596543,IR
1495596544,1495596799,RO
@@ -39644,7 +45544,7 @@
1495641088,1495642111,RO
1495642112,1495644159,SE
1495644160,1495645183,RO
-1495645184,1495646207,US
+1495645184,1495646207,GB
1495646208,1495647743,RO
1495647744,1495648255,IR
1495648256,1495650303,LU
@@ -39745,9 +45645,7 @@
1495767040,1495769343,ES
1495769344,1495769599,RO
1495769600,1495769855,NL
-1495769856,1495770111,IT
-1495770112,1495770367,NL
-1495770368,1495770623,IT
+1495769856,1495770623,IT
1495770624,1495770879,RO
1495770880,1495771135,ES
1495771136,1495772159,PL
@@ -39851,7 +45749,7 @@
1495868416,1495869439,RO
1495869440,1495870463,IR
1495870464,1495871487,BE
-1495871488,1495871743,FI
+1495871488,1495871743,ES
1495871744,1495872511,GB
1495872512,1495873535,BE
1495873536,1495874047,RO
@@ -39867,7 +45765,8 @@
1495902208,1495903231,NL
1495903232,1495906303,RO
1495906304,1495907327,HK
-1495907328,1495908351,GB
+1495907328,1495907583,US
+1495907584,1495908351,GB
1495908352,1495922687,IR
1495922688,1495924735,LU
1495924736,1495926783,IT
@@ -39952,7 +45851,7 @@
1495998720,1495999487,RO
1495999488,1495999999,IR
1496000000,1496002559,RO
-1496002560,1496002815,GB
+1496002560,1496002815,US
1496002816,1496003071,GG
1496003072,1496003327,RO
1496003328,1496003583,DE
@@ -40049,7 +45948,9 @@
1496110592,1496111103,RO
1496111104,1496113151,GR
1496113152,1496117247,RO
-1496117248,1496118271,IR
+1496117248,1496117309,HK
+1496117310,1496117310,IR
+1496117311,1496118271,HK
1496118272,1496119295,RO
1496119296,1496121343,SE
1496121344,1496122367,MD
@@ -40292,9 +46193,14 @@
1500299264,1500315647,PL
1500315648,1500332031,RU
1500332032,1500348415,PT
-1500348416,1500407807,RU
-1500407808,1500408831,UA
-1500408832,1500413951,RU
+1500348416,1500397567,RU
+1500397568,1500399615,UA
+1500399616,1500401663,RU
+1500401664,1500403711,UA
+1500403712,1500407807,RU
+1500407808,1500409855,UA
+1500409856,1500411903,RU
+1500411904,1500413951,UA
1500413952,1500430335,DE
1500430336,1500446719,RS
1500446720,1500463103,LV
@@ -40352,7 +46258,9 @@
1502976120,1502976127,ES
1502976128,1502976279,IE
1502976280,1502976287,SE
-1502976288,1502976479,IE
+1502976288,1502976463,IE
+1502976464,1502976471,GB
+1502976472,1502976479,IE
1502976480,1502976487,PL
1502976488,1502976703,IE
1502976704,1502976719,BE
@@ -40399,8 +46307,7 @@
1503490048,1503490559,GP
1503490560,1503491071,MQ
1503491072,1503491583,GP
-1503491584,1503491839,FR
-1503491840,1503492095,MQ
+1503491584,1503492095,MQ
1503492096,1503493119,GP
1503493120,1503493887,MQ
1503493888,1503494143,GP
@@ -40434,9 +46341,7 @@
1503900680,1503900687,BE
1503900688,1503901567,DE
1503901568,1503901695,TW
-1503901696,1503902215,DE
-1503902216,1503902223,US
-1503902224,1503906407,DE
+1503901696,1503906407,DE
1503906408,1503906415,MX
1503906416,1503920127,DE
1503920128,1503985663,HR
@@ -40477,13 +46382,10 @@
1505255424,1505263615,IT
1505263616,1505271807,DK
1505271808,1505279999,NL
-1505280000,1505282047,AE
-1505282048,1505282815,IR
+1505280000,1505282815,IR
1505282816,1505284351,AE
1505284352,1505284607,IR
-1505284608,1505284863,AE
-1505284864,1505285119,IR
-1505285120,1505286655,AE
+1505284608,1505286655,AE
1505286656,1505288191,IR
1505288192,1505296383,RU
1505296384,1505304575,UA
@@ -40526,7 +46428,11 @@
1505470720,1505470783,CZ
1505470784,1505470847,DE
1505470848,1505470975,CZ
-1505470976,1505475583,US
+1505470976,1505471487,US
+1505471488,1505472511,CZ
+1505472512,1505472767,US
+1505472768,1505473535,CZ
+1505473536,1505475583,US
1505475584,1505478655,CZ
1505478656,1505482751,DE
1505482752,1505484799,LB
@@ -40613,9 +46519,7 @@
1506342912,1506344959,UA
1506344960,1506377727,LV
1506377728,1506410495,HR
-1506410496,1506422063,DE
-1506422064,1506422079,GB
-1506422080,1506443263,DE
+1506410496,1506443263,DE
1506443264,1506444397,GB
1506444398,1506444398,DE
1506444399,1506444757,GB
@@ -40650,15 +46554,17 @@
1506455544,1506455547,IT
1506455548,1506456533,GB
1506456534,1506456534,IT
-1506456535,1506456575,GB
-1506456576,1506456831,IE
-1506456832,1506456959,GB
+1506456535,1506456771,GB
+1506456772,1506456775,IE
+1506456776,1506456815,GB
+1506456816,1506456819,IE
+1506456820,1506456959,GB
1506456960,1506457087,IT
-1506457088,1506457599,GB
-1506457600,1506459177,CH
-1506459178,1506459178,GB
-1506459179,1506459647,CH
-1506459648,1506459763,GB
+1506457088,1506458244,GB
+1506458245,1506458245,CH
+1506458246,1506458359,GB
+1506458360,1506458367,CH
+1506458368,1506459763,GB
1506459764,1506459767,FR
1506459768,1506459781,GB
1506459782,1506459782,FR
@@ -40685,10 +46591,14 @@
1506465189,1506466431,GB
1506466432,1506466559,DE
1506466560,1506469663,GB
-1506469664,1506469695,IT
-1506469696,1506469887,GB
-1506469888,1506471935,IT
-1506471936,1506475873,GB
+1506469664,1506469679,IT
+1506469680,1506471455,GB
+1506471456,1506471487,IT
+1506471488,1506471551,GB
+1506471552,1506471679,IT
+1506471680,1506471871,GB
+1506471872,1506471903,IT
+1506471904,1506475873,GB
1506475874,1506475874,DE
1506475875,1506476031,GB
1506476032,1506508799,KW
@@ -40704,7 +46614,9 @@
1506689024,1506705407,CH
1506705408,1506727935,GB
1506727936,1506728959,PT
-1506728960,1506740223,GB
+1506728960,1506735871,GB
+1506735872,1506736127,US
+1506736128,1506740223,GB
1506740224,1506741247,CH
1506741248,1506742271,TR
1506742272,1506744319,SE
@@ -40743,9 +46655,7 @@
1506865152,1506869247,US
1506869248,1506934783,UA
1506934784,1507000319,GR
-1507000320,1507015167,QA
-1507015168,1507015423,IT
-1507015424,1507065855,QA
+1507000320,1507065855,QA
1507065856,1507131391,SI
1507131392,1507196927,GB
1507196928,1507262463,PT
@@ -40852,7 +46762,9 @@
1509449728,1509453823,ES
1509453824,1509457919,RU
1509457920,1509462015,NL
-1509462016,1509466111,LI
+1509462016,1509465599,LI
+1509465600,1509465855,CH
+1509465856,1509466111,LI
1509466112,1509469749,SC
1509469750,1509469750,NL
1509469751,1509470207,SC
@@ -40930,41 +46842,53 @@
1509948416,1509948671,ES
1509948672,1509949439,NL
1509949440,1510604799,FR
-1510604800,1510609407,RE
-1510609408,1510609663,FR
-1510609664,1510670335,RE
+1510604800,1510608383,RE
+1510608384,1510608639,FR
+1510608640,1510614015,RE
+1510614016,1510614271,FR
+1510614272,1510670335,RE
1510670336,1511981055,FR
-1511981056,1511997951,GP
+1511981056,1511985663,GP
+1511985664,1511985919,FR
+1511985920,1511995135,GP
+1511995136,1511995391,FR
+1511995392,1511997439,GP
+1511997440,1511997951,FR
1511997952,1511998207,MF
-1511998208,1512003583,BL
+1511998208,1511998463,BL
+1511998464,1511998719,MF
+1511998720,1512000767,BL
+1512000768,1512001023,MF
+1512001024,1512002047,BL
+1512002048,1512002559,MF
+1512002560,1512003583,BL
1512003584,1512005631,FR
1512005632,1512006143,MF
-1512006144,1512006655,BL
-1512006656,1512006911,MF
-1512006912,1512007679,BL
+1512006144,1512007679,BL
1512007680,1512009727,FR
1512009728,1512011263,BL
1512011264,1512011519,MF
1512011520,1512011775,BL
-1512011776,1512012031,MF
-1512012032,1512012287,BL
-1512012288,1512012543,MF
+1512011776,1512012287,MF
+1512012288,1512012543,BL
1512012544,1512012799,GP
1512012800,1512013823,BL
-1512013824,1512021247,GF
-1512021248,1512021503,FR
-1512021504,1512030207,GF
+1512013824,1512019455,GF
+1512019456,1512019711,FR
+1512019712,1512027903,GF
+1512027904,1512028159,FR
+1512028160,1512030207,GF
1512030208,1512046591,MQ
1512046592,1512308735,FR
1512308736,1512333567,GP
1512333568,1512333823,FR
1512333824,1512340735,GP
1512340736,1512340991,FR
-1512340992,1512370441,GP
+1512340992,1512363519,GP
+1512363520,1512363775,FR
+1512363776,1512370441,GP
1512370442,1512370442,FR
-1512370443,1512371199,GP
-1512371200,1512371455,FR
-1512371456,1512374271,GP
+1512370443,1512374271,GP
1512374272,1513892207,FR
1513892208,1513892208,ES
1513892209,1514143743,FR
@@ -40981,13 +46905,13 @@
1515335680,1515337727,GP
1515337728,1515338239,FR
1515338240,1515338751,GF
-1515338752,1515467519,FR
+1515338752,1515467007,FR
+1515467008,1515467263,ES
+1515467264,1515467519,FR
1515467520,1515468031,US
1515468032,1515468287,FR
1515468288,1515468543,NL
-1515468544,1515469823,FR
-1515469824,1515470079,DE
-1515470080,1515470335,FR
+1515468544,1515470335,FR
1515470336,1515470847,US
1515470848,1515488511,FR
1515488512,1515488895,US
@@ -41097,9 +47021,8 @@
1519714304,1519779839,NO
1519779840,1519910911,RU
1519910912,1519927295,GB
-1519927296,1519927551,NL
-1519927552,1519928319,BE
-1519928320,1519936191,GB
+1519927296,1519929343,NL
+1519929344,1519936191,GB
1519936192,1519936255,DK
1519936256,1519943679,GB
1519943680,1519976447,AT
@@ -41124,10 +47047,8 @@
1522401280,1522532351,EE
1522532352,1524629503,GB
1524629504,1525097983,SE
-1525097984,1525098111,DK
-1525098112,1525102847,SE
-1525102848,1525103103,DK
-1525103104,1525678079,SE
+1525097984,1525098239,DK
+1525098240,1525678079,SE
1525678080,1526726655,GB
1526726656,1531183103,DE
1531183104,1531445247,FR
@@ -41164,8 +47085,8 @@
1532675072,1532675583,UA
1532675584,1532676095,RU
1532676096,1532678143,MD
-1532678144,1532678655,UA
-1532678656,1532680191,RU
+1532678144,1532678399,UA
+1532678400,1532680191,RU
1532680192,1532681215,UZ
1532681216,1532681727,RU
1532681728,1532682239,BY
@@ -41178,34 +47099,41 @@
1532774144,1532774399,CH
1532774400,1532782591,BG
1532782592,1532782847,IR
-1532782848,1532784639,BG
+1532782848,1532783870,BG
+1532783871,1532783871,CY
+1532783872,1532784383,BG
+1532784384,1532784639,CY
1532784640,1532785151,NL
1532785152,1532785407,IR
-1532785408,1532786943,BG
+1532785408,1532785663,BG
+1532785664,1532786687,CH
+1532786688,1532786943,CY
1532786944,1532788735,IR
-1532788736,1532788991,BG
+1532788736,1532788991,CY
1532788992,1532790783,IR
-1532790784,1532793087,BG
+1532790784,1532791295,CY
+1532791296,1532791807,BG
+1532791808,1532792831,CH
+1532792832,1532793087,BG
1532793088,1532794879,IR
-1532794880,1532795903,DE
+1532794880,1532795903,CH
1532795904,1532796927,IR
-1532796928,1532797439,DE
-1532797440,1532797951,BG
+1532796928,1532797951,BG
1532797952,1532798975,IR
1532798976,1532799999,BG
1532800000,1532801023,IR
1532801024,1532801535,SA
1532801536,1532802047,BG
1532802048,1532805631,IR
-1532805632,1532805887,BG
-1532805888,1532806143,DE
+1532805632,1532806143,BG
1532806144,1532806399,GB
-1532806400,1532808191,BG
+1532806400,1532807167,BG
+1532807168,1532808191,CH
1532808192,1532811263,IR
1532811264,1532812031,BG
1532812032,1532812287,RO
1532812288,1532813311,IR
-1532813312,1532814335,BG
+1532813312,1532814335,CH
1532814336,1532814847,IR
1532814848,1532815103,BG
1532815104,1532815359,IR
@@ -41250,9 +47178,8 @@
1533474816,1533476863,FR
1533476864,1533478911,IE
1533478912,1533480959,DE
-1533480960,1533481471,GB
-1533481472,1533481727,NL
-1533481728,1533482495,GB
+1533480960,1533481983,NL
+1533481984,1533482495,GB
1533482496,1533482751,NL
1533482752,1533483007,GB
1533483008,1533485055,AM
@@ -41261,7 +47188,8 @@
1533486336,1533486719,NO
1533486720,1533486783,DK
1533486784,1533487103,FI
-1533487104,1533488639,FR
+1533487104,1533487615,IN
+1533487616,1533488639,FR
1533488640,1533488895,US
1533488896,1533489151,FR
1533489152,1533491199,ES
@@ -41271,7 +47199,9 @@
1533498368,1533499391,GB
1533499392,1533501439,MT
1533501440,1533503487,LT
-1533503488,1533505535,RU
+1533503488,1533503999,RU
+1533504000,1533504511,KZ
+1533504512,1533505535,RU
1533505536,1533507583,DE
1533507584,1533509631,UA
1533509632,1533511679,GB
@@ -41329,9 +47259,9 @@
1533771520,1533771775,GB
1533771776,1533804543,IR
1533804544,1533805567,RU
-1533805568,1533807615,NL
+1533805568,1533807615,GB
1533807616,1533808639,US
-1533808640,1533809663,SG
+1533808640,1533809663,GB
1533809664,1533810687,AZ
1533810688,1533814783,RU
1533814784,1533815039,AG
@@ -41464,7 +47394,9 @@
1534715600,1534715615,FI
1534715616,1534715739,FR
1534715740,1534715743,PL
-1534715744,1534715871,FR
+1534715744,1534715783,FR
+1534715784,1534715787,NL
+1534715788,1534715871,FR
1534715872,1534715875,ES
1534715876,1534715887,FR
1534715888,1534715903,IT
@@ -41486,7 +47418,9 @@
1534716396,1534716399,GB
1534716400,1534716495,FR
1534716496,1534716511,ES
-1534716512,1534716655,FR
+1534716512,1534716647,FR
+1534716648,1534716651,ES
+1534716652,1534716655,FR
1534716656,1534716663,IE
1534716664,1534717191,FR
1534717192,1534717199,FI
@@ -41542,7 +47476,9 @@
1534718816,1534718819,PL
1534718820,1534719071,FR
1534719072,1534719075,FI
-1534719076,1534719555,FR
+1534719076,1534719323,FR
+1534719324,1534719327,DE
+1534719328,1534719555,FR
1534719556,1534719559,PL
1534719560,1534719679,FR
1534719680,1534719695,GB
@@ -41629,7 +47565,7 @@
1535311872,1535344639,EE
1535344640,1535369215,HR
1535369216,1535377407,LT
-1535377408,1535378431,DE
+1535377408,1535378431,US
1535378432,1535378943,RO
1535378944,1535379455,ES
1535379456,1535379711,DE
@@ -41762,7 +47698,9 @@
1535538768,1535538799,DE
1535538800,1535540159,FR
1535540160,1535540223,CZ
-1535540224,1535540799,FR
+1535540224,1535540435,FR
+1535540436,1535540439,ES
+1535540440,1535540799,FR
1535540800,1535540863,PL
1535540864,1535540991,BE
1535540992,1535542079,FR
@@ -41796,7 +47734,9 @@
1535548288,1535548415,ES
1535548416,1535548463,FR
1535548464,1535548479,LT
-1535548480,1535548991,FR
+1535548480,1535548943,FR
+1535548944,1535548959,LT
+1535548960,1535548991,FR
1535548992,1535549055,PT
1535549056,1535549151,FR
1535549152,1535549183,PL
@@ -41942,7 +47882,9 @@
1535564416,1535564543,BE
1535564544,1535564767,FR
1535564768,1535564799,PL
-1535564800,1535565503,FR
+1535564800,1535565019,FR
+1535565020,1535565023,ES
+1535565024,1535565503,FR
1535565504,1535565567,IT
1535565568,1535565615,FR
1535565616,1535565623,ES
@@ -41950,7 +47892,9 @@
1535565760,1535565823,CZ
1535565824,1535566143,FR
1535566144,1535566159,ES
-1535566160,1535566575,FR
+1535566160,1535566515,FR
+1535566516,1535566519,DE
+1535566520,1535566575,FR
1535566576,1535566591,NL
1535566592,1535566655,FR
1535566656,1535566719,PL
@@ -41971,7 +47915,10 @@
1535571016,1535571071,FR
1535571072,1535571199,GB
1535571200,1535571263,BE
-1535571264,1535571519,FR
+1535571264,1535571423,FR
+1535571424,1535571439,ES
+1535571440,1535571455,FR
+1535571456,1535571519,PT
1535571520,1535571583,ES
1535571584,1535571711,FR
1535571712,1535571743,PL
@@ -42024,7 +47971,8 @@
1535836160,1535868927,CZ
1535868928,1535901695,BG
1535901696,1535934463,GR
-1535934464,1535967231,KW
+1535934464,1535966975,KW
+1535966976,1535967231,IT
1535967232,1535999999,AT
1536000000,1536032767,NL
1536032768,1536036863,LV
@@ -42095,9 +48043,11 @@
1536476672,1536479231,NL
1536479232,1536483327,GB
1536483328,1536491519,NL
-1536491520,1536499711,NO
+1536491520,1536497663,SE
+1536497664,1536499711,NO
1536499712,1536503807,SE
-1536503808,1536507903,NO
+1536503808,1536505855,NO
+1536505856,1536507903,SE
1536507904,1536524287,RU
1536524288,1536540671,BY
1536540672,1536549887,PL
@@ -42332,9 +48282,7 @@
1539385344,1539385855,PL
1539385856,1539386367,BE
1539386368,1539386623,IT
-1539386624,1539386631,GB
-1539386632,1539386639,IT
-1539386640,1539386751,GB
+1539386624,1539386751,GB
1539386752,1539386815,IT
1539386816,1539386879,GB
1539386880,1539387391,IT
@@ -42347,7 +48295,7 @@
1539393536,1539393791,DE
1539393792,1539394047,PL
1539394048,1539394303,GI
-1539394304,1539394559,RS
+1539394304,1539394559,FR
1539394560,1539396607,UA
1539396608,1539397631,PL
1539397632,1539398143,RU
@@ -42617,7 +48565,9 @@
1539586048,1539587071,PL
1539587072,1539588095,UA
1539588096,1539589119,IT
-1539589120,1539590143,DE
+1539589120,1539589375,DE
+1539589376,1539589631,US
+1539589632,1539590143,DE
1539590144,1539591167,RU
1539591168,1539592191,UZ
1539592192,1539593215,UA
@@ -42655,7 +48605,7 @@
1539634176,1539638271,RU
1539638272,1539639295,UA
1539639296,1539640319,RU
-1539640320,1539641343,PL
+1539640320,1539641343,CY
1539641344,1539642367,UA
1539642368,1539643391,RU
1539643392,1539644415,UA
@@ -42867,8 +48817,7 @@
1539748096,1539748351,PL
1539748352,1539748607,NL
1539748608,1539748863,PL
-1539748864,1539749119,GB
-1539749120,1539749375,BG
+1539748864,1539749375,GB
1539749376,1539749631,PT
1539749632,1539749887,GR
1539749888,1539750143,RU
@@ -43259,7 +49208,7 @@
1539960832,1539962879,UA
1539962880,1539964927,RU
1539964928,1539965951,UA
-1539965952,1539966975,RU
+1539965952,1539966975,CZ
1539966976,1539967999,UA
1539968000,1539972095,RU
1539972096,1539973119,GB
@@ -43270,7 +49219,7 @@
1539977216,1539978239,DE
1539978240,1539979263,CZ
1539979264,1539980287,RU
-1539980288,1539981311,VG
+1539980288,1539981311,SC
1539981312,1539982335,SI
1539982336,1539983359,RU
1539983360,1539984383,UA
@@ -43599,7 +49548,8 @@
1540291584,1540292095,UA
1540292096,1540292607,RU
1540293120,1540293631,DK
-1540293632,1540296703,PL
+1540293632,1540295167,UA
+1540295168,1540296703,PL
1540296704,1540297215,DE
1540297216,1540298239,FR
1540298240,1540298751,HR
@@ -44230,7 +50180,7 @@
1540624128,1540624383,RS
1540624384,1540624639,IR
1540624640,1540624895,BG
-1540624896,1540625407,GB
+1540624896,1540625151,GB
1540625664,1540625919,FR
1540625920,1540626175,UA
1540626176,1540626431,RO
@@ -44388,7 +50338,7 @@
1540675584,1540675839,GB
1540675840,1540676351,RU
1540676352,1540676607,IT
-1540676864,1540677119,RU
+1540676864,1540677119,DE
1540677120,1540677375,GB
1540677376,1540677631,PL
1540677632,1540677887,DK
@@ -44684,7 +50634,7 @@
1540807680,1540809727,RU
1540809728,1540810751,GB
1540810752,1540811775,UA
-1540811776,1540812799,PL
+1540811776,1540812799,CY
1540812800,1540813823,RU
1540813824,1540815871,UA
1540815872,1540816895,DE
@@ -44956,7 +50906,8 @@
1540944640,1540944895,DE
1540944896,1540945151,UA
1540945152,1540945407,DE
-1540945408,1540945919,GB
+1540945408,1540945663,GB
+1540945664,1540945919,AT
1540945920,1540946175,DE
1540946176,1540946431,AT
1540946432,1540946943,UA
@@ -45103,7 +51054,9 @@
1541004544,1541004799,PL
1541004800,1541005055,SI
1541005312,1541005567,PL
-1541005568,1541006079,AT
+1541005568,1541005695,AT
+1541005696,1541005727,DE
+1541005728,1541006079,AT
1541006080,1541006335,RU
1541006336,1541006591,PL
1541006592,1541006847,AT
@@ -45565,7 +51518,8 @@
1541265408,1541265919,RS
1541265920,1541266431,UA
1541266432,1541266943,KW
-1541266944,1541267455,CY
+1541266944,1541267199,NL
+1541267200,1541267455,CY
1541267456,1541267967,FR
1541267968,1541268479,DE
1541268480,1541268991,AM
@@ -46066,7 +52020,7 @@
1541559296,1541560319,GB
1541560320,1541561343,DE
1541561344,1541562367,RU
-1541562624,1541562879,UA
+1541562624,1541562879,BZ
1541562880,1541563135,FR
1541563136,1541563391,NL
1541563392,1541564415,PL
@@ -46735,7 +52689,8 @@
1541959680,1541959935,PL
1541959936,1541960191,RU
1541960192,1541960703,NL
-1541960704,1541962751,RU
+1541960704,1541961727,UA
+1541961728,1541962751,RU
1541962752,1541963263,GB
1541963264,1541963519,RU
1541963520,1541963775,PL
@@ -47550,8 +53505,8 @@
1542444800,1542445055,RU
1542445056,1542445567,SE
1542445568,1542446079,IL
-1542446080,1542447871,RO
-1542447872,1542448639,RU
+1542446080,1542448127,RO
+1542448128,1542448639,RU
1542448640,1542448895,RO
1542448896,1542449151,AT
1542449152,1542450175,UA
@@ -47778,12 +53733,14 @@
1542670848,1542671359,NL
1542671360,1542671871,FR
1542671872,1542672383,AT
-1542672384,1542674431,NL
-1542674432,1542674687,RU
+1542672384,1542673407,NL
+1542673408,1542674687,RU
1542674688,1542674943,US
1542674944,1542675455,RU
-1542675456,1542676479,US
-1542676480,1542681087,RU
+1542675456,1542675711,US
+1542675712,1542675967,RU
+1542675968,1542676223,US
+1542676224,1542681087,RU
1542681088,1542681343,GB
1542681600,1542683135,RU
1542683136,1542683391,SK
@@ -48059,9 +54016,7 @@
1546283532,1546283533,FR
1546283534,1546283623,DE
1546283624,1546283631,FR
-1546283632,1546283693,DE
-1546283694,1546283695,FR
-1546283696,1546284047,DE
+1546283632,1546284047,DE
1546284048,1546284055,FR
1546284056,1546284287,DE
1546284288,1546284291,FR
@@ -48087,8 +54042,7 @@
1546311680,1546313727,FR
1546313728,1546315775,DE
1546315776,1546317823,NL
-1546317824,1546318335,GB
-1546318336,1546319871,CH
+1546317824,1546319871,CH
1546319872,1546321919,RS
1546321920,1546323967,RU
1546323968,1546325247,GE
@@ -48141,9 +54095,13 @@
1546733568,1546735615,GP
1546735616,1546737663,MQ
1546737664,1546741759,GP
-1546741760,1546743807,GF
+1546741760,1546742783,FR
+1546742784,1546743807,GF
1546743808,1546744831,FR
-1546744832,1546747903,MQ
+1546744832,1546746367,MQ
+1546746368,1546746879,FR
+1546746880,1546747391,MQ
+1546747392,1546747903,FR
1546747904,1546764287,RU
1546764288,1546780671,KZ
1546780672,1546797055,IR
@@ -48180,7 +54138,7 @@
1547440128,1547444223,AL
1547444224,1547445247,ES
1547445248,1547446271,DE
-1547447296,1547448319,GB
+1547446272,1547448319,GB
1547448320,1547452415,SK
1547452416,1547456511,IT
1547456512,1547460607,RU
@@ -48189,9 +54147,7 @@
1547472896,1547476991,DK
1547476992,1547481087,ES
1547481088,1547485183,UA
-1547485184,1547485695,IE
-1547485696,1547485823,GB
-1547485824,1547489279,IE
+1547485184,1547489279,IE
1547489280,1547493375,DE
1547493376,1547497471,RS
1547497472,1547501567,GB
@@ -48316,14 +54272,16 @@
1550985216,1550987263,PS
1550987264,1550988287,IR
1550988288,1550988543,RO
-1550988544,1550988799,JP
+1550988544,1550988544,ES
+1550988545,1550988799,JP
1550988800,1550989055,RO
1550989056,1550989311,GG
1550989312,1550990335,ES
1550990336,1550991359,AU
1550991360,1550995455,IR
1550995456,1550996223,RO
-1550996224,1550996314,AU
+1550996224,1550996224,ES
+1550996225,1550996314,AU
1550996315,1550996315,ES
1550996316,1550996479,AU
1550996480,1550998527,RO
@@ -48341,18 +54299,441 @@
1551456256,1551499263,NL
1551503360,1551504383,GB
1551504384,1551505407,FR
+1551511987,1551511990,DE
+1551512003,1551512005,DE
+1551512011,1551512014,DE
+1551512580,1551512583,GB
+1551512588,1551512590,GB
+1551512597,1551512599,GB
+1551512604,1551512607,GB
+1551512612,1551512615,GB
+1551512620,1551512623,GB
+1551512628,1551512631,GB
+1551512636,1551512637,GB
+1551512639,1551512639,GB
+1551512644,1551512645,GB
+1551512647,1551512647,GB
+1551512652,1551512655,GB
+1551512660,1551512661,GB
+1551512663,1551512663,GB
+1551512669,1551512669,GB
+1551512671,1551512671,GB
+1551512676,1551512679,GB
+1551512684,1551512687,GB
+1551512692,1551512695,GB
+1551512700,1551512701,GB
+1551512916,1551512919,BE
+1551512924,1551512927,BE
+1551512932,1551512935,BE
+1551512940,1551512942,BE
+1551512948,1551512951,BE
+1551512956,1551512956,BE
+1551512958,1551512959,BE
+1551512964,1551512967,BE
+1551512972,1551512975,BE
+1551512980,1551512983,BE
+1551512988,1551512991,BE
+1551512996,1551512999,BE
+1551513004,1551513007,BE
+1551513012,1551513015,BE
+1551513092,1551513093,GB
+1551513096,1551513106,GB
+1551513108,1551513154,GB
+1551513156,1551513165,GB
1551516672,1551517695,IT
1551517696,1551518719,ES
1551528960,1551529983,FR
+1551531268,1551531271,IT
+1551531276,1551531276,IT
+1551531278,1551531279,IT
+1551531285,1551531287,IT
+1551531292,1551531292,IT
+1551531294,1551531295,IT
+1551531302,1551531302,IT
+1551531892,1551531895,DE
+1551531900,1551531903,DE
+1551531908,1551531911,DE
+1551531916,1551531919,DE
+1551531924,1551531927,DE
+1551531932,1551531935,DE
+1551531940,1551531943,DE
+1551531948,1551531951,DE
+1551538436,1551538439,GB
+1551538444,1551538447,GB
+1551538452,1551538455,GB
+1551538460,1551538463,GB
+1551538468,1551538471,GB
+1551538476,1551538479,GB
+1551538484,1551538487,GB
+1551538494,1551538495,GB
+1551538500,1551538503,GB
+1551538508,1551538511,GB
+1551538516,1551538519,GB
+1551538524,1551538526,GB
+1551538532,1551538535,GB
+1551538540,1551538541,GB
+1551538543,1551538543,GB
+1551538548,1551538551,GB
+1551538557,1551538559,GB
+1551538564,1551538566,GB
+1551538572,1551538575,GB
+1551538580,1551538580,GB
+1551538582,1551538582,GB
+1551538746,1551538749,GB
+1551538754,1551538755,GB
+1551538762,1551538764,GB
+1551538770,1551538773,GB
+1551538778,1551538781,GB
+1551538786,1551538789,GB
+1551538794,1551538797,GB
+1551538802,1551538803,GB
+1551538956,1551538959,GB
+1551538964,1551538967,GB
+1551538972,1551538975,GB
+1551538980,1551538983,GB
+1551538988,1551538991,GB
+1551538996,1551538997,GB
1551544320,1551546367,DE
-1551548416,1551551487,DE
-1551556608,1551558655,FR
-1551560704,1551561727,DE
+1551547540,1551547540,ES
+1551547542,1551547558,ES
+1551547948,1551547951,SE
+1551547956,1551547959,SE
+1551547965,1551547967,SE
+1551547972,1551547975,SE
+1551547980,1551547983,SE
+1551547988,1551547991,SE
+1551548012,1551548015,SE
+1551548416,1551548691,DE
+1551548692,1551548695,GB
+1551548696,1551548699,DE
+1551548700,1551548703,GB
+1551548704,1551548707,DE
+1551548708,1551548711,GB
+1551548712,1551548715,DE
+1551548716,1551548719,GB
+1551548720,1551548723,DE
+1551548724,1551548727,GB
+1551548728,1551548731,DE
+1551548732,1551548735,GB
+1551548736,1551548739,DE
+1551548740,1551548740,GB
+1551548741,1551548741,DE
+1551548742,1551548743,GB
+1551548744,1551548747,DE
+1551548748,1551548751,GB
+1551548752,1551548755,DE
+1551548756,1551548759,GB
+1551548760,1551551487,DE
+1551552014,1551552017,GB
+1551552022,1551552023,GB
+1551552025,1551552025,GB
+1551552030,1551552033,GB
+1551552038,1551552041,GB
+1551552046,1551552049,GB
+1551552054,1551552057,GB
+1551552062,1551552065,GB
+1551552070,1551552073,GB
+1551552078,1551552079,GB
+1551552081,1551552081,GB
+1551552102,1551552105,GB
+1551552110,1551552112,GB
+1551552119,1551552120,GB
+1551552126,1551552126,GB
+1551552128,1551552129,GB
+1551552134,1551552137,GB
+1551552142,1551552145,GB
+1551552150,1551552153,GB
+1551552158,1551552161,GB
+1551552166,1551552169,GB
+1551552174,1551552174,GB
+1551554308,1551554310,DE
+1551554316,1551554319,DE
+1551554324,1551554327,DE
+1551554332,1551554335,DE
+1551554341,1551554343,DE
+1551554348,1551554351,DE
+1551554365,1551554365,DE
+1551554367,1551554368,DE
+1551554370,1551554371,DE
+1551554380,1551554392,DE
+1551554394,1551554396,DE
+1551554405,1551554406,DE
+1551554429,1551554429,DE
+1551555300,1551555303,FR
+1551555308,1551555311,FR
+1551555316,1551555319,FR
+1551555332,1551555335,FR
+1551555340,1551555343,FR
+1551555348,1551555351,FR
+1551555356,1551555359,FR
+1551555364,1551555367,FR
+1551555372,1551555375,FR
+1551555380,1551555383,FR
+1551555388,1551555391,FR
+1551555396,1551555399,FR
+1551555404,1551555407,FR
+1551555412,1551555415,FR
+1551555420,1551555423,FR
+1551555428,1551555431,FR
+1551555436,1551555439,FR
+1551555444,1551555447,FR
+1551555452,1551555455,FR
+1551555460,1551555463,FR
+1551555468,1551555471,FR
+1551555476,1551555479,FR
+1551555484,1551555487,FR
+1551555492,1551555495,FR
+1551555500,1551555503,FR
+1551555508,1551555511,FR
+1551555516,1551555519,FR
+1551555524,1551555527,FR
+1551555532,1551555535,FR
+1551555540,1551555543,FR
+1551555548,1551555551,FR
+1551555556,1551555559,FR
+1551556608,1551556867,FR
+1551556868,1551556871,IT
+1551556872,1551556875,FR
+1551556876,1551556878,IT
+1551556879,1551556883,FR
+1551556884,1551556887,IT
+1551556888,1551556891,FR
+1551556892,1551556895,IT
+1551556896,1551556899,FR
+1551556900,1551556903,IT
+1551556904,1551556907,FR
+1551556908,1551556911,IT
+1551556912,1551556915,FR
+1551556916,1551556919,IT
+1551556920,1551556923,FR
+1551556924,1551556925,IT
+1551556926,1551556939,FR
+1551556940,1551556943,IT
+1551556944,1551556947,FR
+1551556948,1551556951,IT
+1551556952,1551556955,FR
+1551556956,1551556959,IT
+1551556960,1551556963,FR
+1551556964,1551556967,IT
+1551556968,1551556971,FR
+1551556972,1551556975,IT
+1551556976,1551556979,FR
+1551556980,1551556983,IT
+1551556984,1551556987,FR
+1551556988,1551556991,IT
+1551556992,1551556995,FR
+1551556996,1551556999,IT
+1551557000,1551557003,FR
+1551557004,1551557007,IT
+1551557008,1551558655,FR
+1551560704,1551561267,DE
+1551561268,1551561271,ES
+1551561272,1551561275,DE
+1551561276,1551561279,ES
+1551561280,1551561283,DE
+1551561284,1551561287,ES
+1551561288,1551561291,DE
+1551561292,1551561295,ES
+1551561296,1551561299,DE
+1551561300,1551561301,ES
+1551561302,1551561333,DE
+1551561334,1551561335,ES
+1551561336,1551561339,DE
+1551561340,1551561343,ES
+1551561344,1551561347,DE
+1551561348,1551561351,ES
+1551561352,1551561355,DE
+1551561356,1551561359,ES
+1551561360,1551561363,DE
+1551561364,1551561367,ES
+1551561368,1551561727,DE
1551561728,1551562751,FR
1551564800,1551572991,FR
1551577088,1551580159,NL
1551580350,1551580350,US
+1551581701,1551581703,GB
+1551581708,1551581711,GB
+1551581716,1551581719,GB
+1551581724,1551581727,GB
+1551581732,1551581735,GB
+1551581740,1551581740,GB
+1551581742,1551581743,GB
+1551581748,1551581748,GB
+1551581750,1551581751,GB
+1551581756,1551581759,GB
+1551581764,1551581767,GB
+1551581773,1551581774,GB
+1551581780,1551581783,GB
+1551581788,1551581791,GB
+1551581796,1551581797,GB
+1551581799,1551581799,GB
+1551581805,1551581807,GB
+1551581812,1551581812,GB
+1551581814,1551581815,GB
+1551581820,1551581822,GB
+1551581828,1551581831,GB
+1551581836,1551581839,GB
+1551581844,1551581847,GB
+1551581852,1551581855,GB
+1551581860,1551581863,GB
+1551581868,1551581871,GB
+1551583508,1551583513,ES
+1551583515,1551583518,ES
+1551583708,1551583717,ES
+1551583719,1551583728,ES
+1551584772,1551584775,GB
+1551584780,1551584783,GB
+1551584788,1551584791,GB
+1551584796,1551584799,GB
+1551584804,1551584807,GB
+1551584812,1551584815,GB
+1551584820,1551584823,GB
+1551584828,1551584831,GB
+1551584836,1551584839,GB
+1551584844,1551584845,GB
+1551584898,1551584898,GB
+1551584906,1551584907,GB
+1551584928,1551584928,GB
+1551584981,1551584982,GB
+1551590404,1551590407,FR
+1551590412,1551590415,FR
+1551590420,1551590423,FR
+1551590428,1551590431,FR
+1551590436,1551590439,FR
+1551590444,1551590447,FR
+1551590452,1551590455,FR
+1551590460,1551590463,FR
+1551590468,1551590471,FR
+1551590476,1551590479,FR
+1551590484,1551590486,FR
+1551590492,1551590492,FR
+1551590495,1551590495,FR
+1551590500,1551590503,FR
+1551590508,1551590511,FR
+1551590516,1551590519,FR
+1551590524,1551590527,FR
+1551590532,1551590533,FR
+1551590535,1551590535,FR
+1551590540,1551590543,FR
+1551590548,1551590551,FR
+1551590556,1551590559,FR
+1551590564,1551590567,FR
+1551590572,1551590575,FR
+1551590580,1551590581,FR
+1551590660,1551590663,IT
+1551590668,1551590671,IT
+1551590676,1551590679,IT
+1551590684,1551590687,IT
+1551590692,1551590695,IT
+1551590700,1551590703,IT
+1551590708,1551590711,IT
+1551590716,1551590719,IT
+1551590724,1551590727,IT
+1551591076,1551591076,RO
+1551591078,1551591079,RO
+1551591084,1551591087,RO
+1551591093,1551591095,RO
+1551591101,1551591103,RO
+1551591108,1551591109,RO
+1551591111,1551591111,RO
+1551591148,1551591151,RO
+1551591157,1551591159,RO
+1551591172,1551591175,RO
+1551591181,1551591183,RO
+1551591188,1551591188,RO
+1551601156,1551601159,GB
+1551601164,1551601166,GB
+1551601173,1551601175,GB
+1551601181,1551601183,GB
+1551601189,1551601191,GB
+1551601196,1551601199,GB
+1551601204,1551601205,GB
+1551601220,1551601223,GB
+1551601228,1551601231,GB
+1551601236,1551601239,GB
+1551601244,1551601247,GB
+1551601252,1551601255,GB
+1551601261,1551601263,GB
+1551601268,1551601271,GB
+1551601276,1551601279,GB
+1551601284,1551601287,GB
+1551601292,1551601295,GB
+1551601300,1551601303,GB
+1551601308,1551601311,GB
+1551601316,1551601319,GB
+1551601324,1551601327,GB
+1551601332,1551601335,GB
1551604480,1551604735,SE
+1551611141,1551611143,IT
+1551611149,1551611151,IT
+1551611156,1551611157,IT
+1551611159,1551611159,IT
+1551611164,1551611167,IT
+1551611172,1551611174,IT
+1551611180,1551611183,IT
+1551611188,1551611191,IT
+1551611196,1551611199,IT
+1551611204,1551611204,IT
+1551611207,1551611207,IT
+1551611212,1551611215,IT
+1551611220,1551611223,IT
+1551611228,1551611231,IT
+1551621124,1551621127,DE
+1551621132,1551621135,DE
+1551621140,1551621143,DE
+1551621148,1551621151,DE
+1551621156,1551621159,DE
+1551621164,1551621167,DE
+1551621172,1551621175,DE
+1551621180,1551621183,DE
+1551622559,1551622562,DE
+1551622567,1551622570,DE
+1551622575,1551622578,DE
+1551622583,1551622586,DE
+1551622591,1551622594,DE
+1551622599,1551622602,DE
+1551622607,1551622610,DE
+1551622615,1551622618,DE
+1551622623,1551622626,DE
+1551622631,1551622631,DE
+1551627682,1551627685,GB
+1551627690,1551627693,GB
+1551627698,1551627700,GB
+1551627706,1551627707,GB
+1551628815,1551628815,NL
+1551628820,1551628823,NL
+1551628828,1551628831,NL
+1551628836,1551628836,NL
+1551628838,1551628839,NL
+1551628844,1551628847,NL
+1551628852,1551628855,NL
+1551628860,1551628863,NL
+1551628868,1551628871,NL
+1551628876,1551628879,NL
+1551628884,1551628887,NL
+1551628892,1551628895,NL
+1551628900,1551628903,NL
+1551628908,1551628911,NL
+1551628916,1551628919,NL
+1551628924,1551628927,NL
+1551628932,1551628935,NL
+1551628940,1551628942,NL
+1551629060,1551629063,GB
+1551629068,1551629071,GB
+1551629076,1551629079,GB
+1551629084,1551629087,GB
+1551629092,1551629095,GB
+1551629100,1551629103,GB
+1551629108,1551629111,GB
+1551629116,1551629119,GB
+1551629124,1551629127,GB
+1551629132,1551629135,GB
+1551629140,1551629143,GB
+1551629148,1551629151,GB
+1551629156,1551629159,GB
+1551629164,1551629167,GB
+1551629172,1551629175,GB
+1551629180,1551629183,GB
1551630336,1551892479,RU
1551892480,1554514250,FR
1554514251,1554514251,RE
@@ -48368,7 +54749,9 @@
1555628032,1555824639,ES
1555824640,1555890175,FR
1555890176,1556086783,ES
-1556086784,1557069823,DE
+1556086784,1556824063,DE
+1556824064,1556840447,JP
+1556840448,1557069823,DE
1557069824,1557135359,GB
1557135360,1557313279,DE
1557313280,1557313535,US
@@ -48570,10 +54953,11 @@
1559405568,1559406591,RU
1559406592,1559407615,LB
1559407616,1559408639,IT
-1559408640,1559409663,BG
+1559408640,1559408895,RU
+1559408896,1559409663,BG
1559409664,1559410687,PL
1559410688,1559411711,GB
-1559411712,1559412735,US
+1559411712,1559412735,DE
1559412736,1559420927,IR
1559420928,1559429119,HR
1559429120,1559437311,FR
@@ -48626,7 +55010,7 @@
1559828480,1559829503,CY
1559829504,1559830527,CZ
1559830528,1559831551,JP
-1559831552,1559832575,VG
+1559831552,1559832575,NL
1559832576,1559833599,FR
1559833600,1559835647,DE
1559835648,1559836671,RS
@@ -48637,9 +55021,7 @@
1559887872,1559920639,PT
1559920640,1559921407,LU
1559921408,1559921663,FR
-1559921664,1559923711,LU
-1559923712,1559924735,FR
-1559924736,1559932159,LU
+1559921664,1559932159,LU
1559932160,1559932415,FR
1559932416,1559932927,LU
1559932928,1559934975,DE
@@ -48653,7 +55035,8 @@
1559945728,1559946751,GB
1559946752,1559947519,DE
1559947520,1559948287,LU
-1559948288,1559949311,GB
+1559948288,1559948288,GB
+1559948289,1559949311,LU
1559949312,1559950335,DE
1559950336,1559951359,LU
1559951360,1559952383,DE
@@ -48679,9 +55062,7 @@
1560215552,1560281087,RU
1560281088,1562378239,FR
1562378240,1564999679,IT
-1564999680,1565227007,UA
-1565227008,1565228031,BG
-1565228032,1565523967,UA
+1564999680,1565523967,UA
1565523968,1565655039,RU
1565655040,1565786111,AT
1565786112,1565917183,BY
@@ -48787,7 +55168,9 @@
1566365696,1566367743,RU
1566367744,1566371839,ES
1566371840,1566373887,IT
-1566373888,1566375935,RS
+1566373888,1566374911,RS
+1566374912,1566375167,XK
+1566375168,1566375935,RS
1566375936,1566377983,DE
1566377984,1566380031,BG
1566380032,1566382079,IT
@@ -48847,7 +55230,9 @@
1566427136,1566429183,IT
1566429184,1566437375,GB
1566437376,1566438399,DE
-1566438400,1566439423,NL
+1566438400,1566438911,NL
+1566438912,1566439167,JP
+1566439168,1566439423,NL
1566439424,1566443519,DE
1566443520,1566445567,NO
1566445568,1566447615,PL
@@ -48872,9 +55257,7 @@
1566452052,1566452052,CH
1566452053,1566452053,GB
1566452054,1566452057,UA
-1566452058,1566452071,IE
-1566452072,1566452075,NL
-1566452076,1566452223,IE
+1566452058,1566452223,IE
1566452224,1566453759,IL
1566453760,1566455807,IQ
1566455808,1566457855,PT
@@ -48884,11 +55267,8 @@
1566464000,1566466047,IT
1566466048,1566468095,ES
1566468096,1566470143,BE
-1566470144,1566470655,IE
-1566470656,1566470911,GB
-1566470912,1566471423,IE
-1566471424,1566471679,GB
-1566471680,1566472191,IE
+1566470144,1566470911,GB
+1566470912,1566472191,IE
1566472192,1566474239,GB
1566474240,1566476287,DE
1566476288,1566478335,BG
@@ -48941,15 +55321,15 @@
1566900224,1566965759,IT
1566965760,1567031295,PT
1567031296,1567096831,SI
-1567096832,1567108735,DE
-1567108736,1567108863,PL
-1567108864,1567162367,DE
+1567096832,1567162367,DE
1567162368,1567227903,PL
1567227904,1567245119,FI
1567245120,1567245183,AX
-1567245184,1567266143,FI
-1567266144,1567266175,AX
-1567266176,1567293439,FI
+1567245184,1567257215,FI
+1567257216,1567257343,AX
+1567257344,1567261695,FI
+1567261696,1567261951,AX
+1567261952,1567293439,FI
1567293440,1567358975,IE
1567358976,1567424511,PT
1567424512,1567490047,CY
@@ -49032,7 +55412,7 @@
1567769600,1567769855,RO
1567769856,1567770111,GB
1567770112,1567773439,RO
-1567773440,1567773695,GB
+1567773440,1567773695,US
1567773696,1567773951,RO
1567773952,1567774207,ES
1567774208,1567774719,GB
@@ -49149,7 +55529,7 @@
1568023808,1568024063,IT
1568024064,1568024319,SG
1568024320,1568024575,RO
-1568024576,1568025599,US
+1568024576,1568025599,DE
1568025600,1568026623,RO
1568026624,1568030719,SY
1568030720,1568034815,ES
@@ -49239,9 +55619,7 @@
1570584576,1570585087,RU
1570585088,1570585343,UZ
1570585344,1570586623,RU
-1570586624,1570588671,PL
-1570588672,1570588927,NO
-1570588928,1570590719,PL
+1570586624,1570590719,PL
1570590720,1570592767,IL
1570592768,1570596863,PL
1570596864,1570597887,RU
@@ -49330,7 +55708,7 @@
1571443200,1571443711,RU
1571443712,1571444991,CZ
1571444992,1571445247,RU
-1571445248,1571446271,NL
+1571445248,1571446271,CZ
1571446272,1571446783,RU
1571446784,1571447039,GB
1571447040,1571447295,UA
@@ -49418,15 +55796,18 @@
1571532288,1571532543,CZ
1571532544,1571532799,RU
1571532800,1571533055,CZ
-1571533056,1571533823,UA
+1571533056,1571533175,RU
+1571533176,1571533176,UA
+1571533177,1571533311,RU
+1571533312,1571533823,UA
1571533824,1571534079,CZ
1571534080,1571534847,RU
1571534848,1571535103,LV
1571535104,1571535359,UA
1571535360,1571535617,CZ
1571535618,1571535618,RU
-1571535619,1571535871,CZ
-1571535872,1571540479,RU
+1571535619,1571536895,CZ
+1571536896,1571540479,RU
1571540480,1571540693,CZ
1571540694,1571540695,RU
1571540696,1571540696,CZ
@@ -49440,7 +55821,9 @@
1571542784,1571543039,CZ
1571543040,1571543551,NL
1571543552,1571543807,UA
-1571543808,1571545343,RU
+1571543808,1571544063,RU
+1571544064,1571545087,CZ
+1571545088,1571545343,RU
1571545344,1571545599,UA
1571545600,1571545855,CZ
1571545856,1571546111,RU
@@ -49451,9 +55834,7 @@
1571548160,1571549183,RU
1571549184,1571550207,UA
1571550208,1571550463,RU
-1571550464,1571550719,UA
-1571550720,1571551231,CZ
-1571551232,1571553279,UA
+1571550464,1571553279,UA
1571553280,1571684351,IL
1571684352,1571686399,ES
1571686400,1571688447,GB
@@ -49547,8 +55928,7 @@
1571962880,1571979263,RU
1571979264,1571995647,DK
1571995648,1572012031,UA
-1572012032,1572020223,NO
-1572020224,1572028415,SE
+1572012032,1572028415,SE
1572028416,1572028927,RU
1572028928,1572029183,UA
1572029184,1572029481,RU
@@ -49573,6 +55953,8 @@
1572098048,1572100095,DK
1572100096,1572102143,CH
1572102144,1572110335,BA
+1572110336,1572111359,HU
+1572111360,1572112383,TR
1572112384,1572114431,RU
1572114432,1572116479,BA
1572116480,1572118527,DE
@@ -49834,7 +56216,8 @@
1577058304,1578106879,GB
1578106880,1578115071,DE
1578115072,1578123263,AT
-1578123264,1578139647,DE
+1578123264,1578139391,DE
+1578139392,1578139647,AT
1578139648,1578172415,CH
1578172416,1578237951,MT
1578237952,1578303487,DK
@@ -49875,7 +56258,9 @@
1578590936,1578590943,ES
1578590944,1578591143,FR
1578591144,1578591151,GB
-1578591152,1578591247,FR
+1578591152,1578591187,FR
+1578591188,1578591191,NL
+1578591192,1578591247,FR
1578591248,1578591263,GB
1578591264,1578591407,FR
1578591408,1578591411,ES
@@ -49903,7 +56288,9 @@
1578592184,1578592191,PT
1578592192,1578592199,BE
1578592200,1578592207,CH
-1578592208,1578592375,FR
+1578592208,1578592283,FR
+1578592284,1578592287,PT
+1578592288,1578592375,FR
1578592376,1578592379,GB
1578592380,1578592395,FR
1578592396,1578592399,DE
@@ -49942,7 +56329,9 @@
1578594056,1578594059,ES
1578594060,1578594087,FR
1578594088,1578594095,CZ
-1578594096,1578594223,FR
+1578594096,1578594187,FR
+1578594188,1578594191,IE
+1578594192,1578594223,FR
1578594224,1578594239,PL
1578594240,1578594271,FR
1578594272,1578594303,BE
@@ -50098,7 +56487,9 @@
1578638336,1578638591,PL
1578638592,1578638847,RO
1578638848,1578639359,US
-1578639360,1578643455,ES
+1578639360,1578640639,ES
+1578640640,1578640895,BE
+1578640896,1578643455,ES
1578643456,1578645503,RO
1578645504,1578647551,AT
1578647552,1578649599,US
@@ -50134,7 +56525,11 @@
1578786304,1578786559,BG
1578786560,1578786815,GI
1578786816,1578787071,BG
-1578787072,1578788863,GI
+1578787072,1578787839,GI
+1578787840,1578788095,BG
+1578788096,1578788351,GI
+1578788352,1578788607,BG
+1578788608,1578788863,GI
1578788864,1578790143,BG
1578790144,1578790399,GI
1578790400,1578790911,GB
@@ -50400,9 +56795,11 @@
1585217536,1585219583,FR
1585219584,1585221631,NL
1585221632,1585223679,SK
-1585223680,1585224447,FR
+1585223680,1585223935,FR
+1585223936,1585224191,RE
+1585224192,1585224447,FR
1585224448,1585224703,GP
-1585224704,1585224959,GF
+1585224704,1585224959,FR
1585224960,1585225471,RE
1585225472,1585225727,FR
1585225728,1585227007,UA
@@ -50468,7 +56865,8 @@
1585321984,1585324031,RU
1585324032,1585324543,IE
1585324544,1585324799,FR
-1585324800,1585326079,NL
+1585324800,1585325055,IE
+1585325056,1585326079,DE
1585326080,1585328127,GB
1585328128,1585330175,BE
1585330176,1585332223,IT
@@ -50482,12 +56880,7 @@
1585346560,1585348607,GB
1585348608,1585350655,CH
1585350656,1585352703,IT
-1585352704,1585352959,PT
-1585352960,1585353215,GB
-1585353216,1585353727,PT
-1585353728,1585354094,GB
-1585354095,1585354095,PT
-1585354096,1585354751,GB
+1585352704,1585354751,PT
1585354752,1585356799,RU
1585356800,1585358847,FI
1585358848,1585360895,PT
@@ -50529,7 +56922,9 @@
1585438720,1585440767,DE
1585440768,1585442815,IT
1585442816,1585446911,RU
-1585446912,1585577983,KW
+1585446912,1585533183,KW
+1585533184,1585533439,IT
+1585533440,1585577983,KW
1585577984,1585624156,DE
1585624157,1585624157,GS
1585624158,1585643519,DE
@@ -50539,9 +56934,7 @@
1585971200,1585979391,AT
1585979392,1585987583,GB
1585987584,1585995775,SE
-1585995776,1586000895,AT
-1586000896,1586001151,HR
-1586001152,1586003967,AT
+1585995776,1586003967,AT
1586003968,1586012159,SK
1586012160,1586020351,DE
1586020352,1586028543,RU
@@ -50594,8 +56987,8 @@
1586388992,1586389503,ES
1586389504,1586389759,US
1586389760,1586392831,ES
-1586392832,1586392959,US
-1586392960,1586393607,ES
+1586392832,1586392895,NL
+1586392896,1586393607,ES
1586393608,1586393615,GB
1586393616,1586393631,FR
1586393632,1586393663,NL
@@ -50670,9 +57063,7 @@
1587175424,1587177471,PL
1587177472,1587179519,RS
1587183616,1587184639,RU
-1587184640,1587185663,DE
-1587185664,1587186686,US
-1587186687,1587186687,DE
+1587184640,1587186687,DE
1587186688,1587187711,IT
1587187712,1587188735,EE
1587188736,1587189759,DE
@@ -50692,14 +57083,16 @@
1587347456,1587412991,NL
1587412992,1587418111,RU
1587418112,1587418367,UA
-1587418368,1587418623,RU
+1587418368,1587418623,CH
1587418624,1587418879,FR
1587418880,1587419135,IN
1587419136,1587420159,BG
1587420160,1587421183,CH
1587421184,1587425279,UA
1587425280,1587429375,UZ
-1587429376,1587437567,UA
+1587429376,1587431423,UA
+1587431424,1587433471,SA
+1587433472,1587437567,UA
1587437568,1587445759,RU
1587445760,1587449855,PL
1587449856,1587453951,UA
@@ -50707,7 +57100,8 @@
1587470336,1587474431,PL
1587474432,1587475455,DE
1587475456,1587475711,US
-1587475712,1587476479,MD
+1587475712,1587476223,MD
+1587476224,1587476479,US
1587476480,1587477503,BE
1587477504,1587478527,ES
1587478528,1587511295,RU
@@ -50860,9 +57254,11 @@
1589608448,1589622783,SE
1589622784,1589624831,DK
1589624832,1589626879,SE
-1589626880,1589630975,DK
-1589630976,1589633023,SE
-1589633024,1589641215,DK
+1589626880,1589628927,DK
+1589628928,1589633023,SE
+1589633024,1589637119,DK
+1589637120,1589639167,SE
+1589639168,1589641215,DK
1589641216,1590034431,GB
1590034432,1590036479,RU
1590036480,1590038527,GB
@@ -51024,7 +57420,7 @@
1592285184,1592287231,RU
1592287232,1592289279,RO
1592289280,1592291327,RU
-1592291328,1592293375,NL
+1592291328,1592293375,SM
1592293376,1592295423,LT
1592295424,1592299519,RU
1592299520,1592303615,PL
@@ -51092,7 +57488,9 @@
1593135360,1593135615,IE
1593135616,1593136639,GB
1593136640,1593139199,IE
-1593139200,1593140223,NL
+1593139200,1593139455,GB
+1593139456,1593139711,NL
+1593139712,1593140223,GB
1593140224,1593147391,IE
1593147392,1593163775,RU
1593163776,1593180159,AT
@@ -51148,8 +57546,7 @@
1593376768,1593409535,JO
1593409536,1593412095,DE
1593412096,1593412351,GB
-1593412352,1593420927,DE
-1593420928,1593421055,US
+1593412352,1593421055,DE
1593421056,1593421311,GB
1593421312,1593421567,FR
1593421568,1593421823,GB
@@ -51326,7 +57723,7 @@
1597243392,1597505535,RU
1597505536,1597767679,KZ
1597767680,1598029823,ES
-1598029824,1598062591,RO
+1598029824,1598062591,IR
1598062592,1598095359,RU
1598095360,1598128127,MD
1598128128,1598160895,TR
@@ -51364,7 +57761,9 @@
1599237632,1599242239,KZ
1599242240,1599258623,CZ
1599258624,1599324159,RU
-1599324160,1599340543,IE
+1599324160,1599333375,IE
+1599333376,1599333503,GB
+1599333504,1599340543,IE
1599340544,1599356927,RU
1599356928,1599373311,BH
1599373312,1599406079,RU
@@ -51402,9 +57801,448 @@
1599864832,1600126975,PT
1600126976,1600389119,NL
1600397312,1600401407,DE
+1600414172,1600414172,NL
+1600414175,1600414181,NL
+1600428572,1600428575,DK
+1600428580,1600428583,DK
+1600428588,1600428590,DK
+1600428644,1600428647,DK
+1600428652,1600428655,DK
+1600428660,1600428663,DK
+1600428668,1600428669,DK
+1600428671,1600428671,DK
+1600428676,1600428679,DK
+1600428684,1600428685,DK
+1600428687,1600428687,DK
+1600428692,1600428695,DK
+1600428700,1600428703,DK
+1600428708,1600428710,DK
+1600432388,1600432423,NL
+1600432484,1600432489,NL
+1600432491,1600432510,NL
+1600432772,1600432775,AE
+1600432780,1600432783,AE
+1600432788,1600432789,AE
+1600432791,1600432791,AE
+1600432798,1600432799,AE
+1600432805,1600432807,AE
+1600432812,1600432815,AE
+1600432900,1600432935,FR
+1600432971,1600432974,FR
+1600432979,1600432982,FR
+1600432987,1600432988,FR
+1600433005,1600433006,FR
+1600433011,1600433013,FR
+1600433019,1600433022,FR
+1600433028,1600433030,FR
+1600433035,1600433038,FR
+1600433043,1600433046,FR
+1600433051,1600433051,FR
+1600433053,1600433054,FR
+1600433059,1600433062,FR
+1600433069,1600433070,FR
+1600433075,1600433078,FR
+1600433083,1600433083,FR
+1600433085,1600433086,FR
+1600433091,1600433094,FR
+1600433099,1600433102,FR
+1600433108,1600433110,FR
+1600433115,1600433118,FR
+1600433123,1600433124,FR
+1600435460,1600435461,DE
+1600435463,1600435463,DE
+1600435469,1600435470,DE
+1600435476,1600435477,DE
+1600435479,1600435479,DE
+1600435484,1600435486,DE
+1600435492,1600435495,DE
+1600435500,1600435503,DE
+1600435508,1600435511,DE
+1600435516,1600435519,DE
+1600435524,1600435527,DE
+1600435533,1600435535,DE
+1600435541,1600435541,DE
+1600435543,1600435543,DE
+1600435548,1600435549,DE
+1600435551,1600435551,DE
+1600435556,1600435559,DE
+1600435565,1600435565,DE
+1600438532,1600438535,DE
+1600438540,1600438543,DE
+1600438548,1600438551,DE
+1600438556,1600438559,DE
+1600438564,1600438567,DE
+1600438572,1600438575,DE
+1600438580,1600438583,DE
+1600438588,1600438591,DE
+1600438789,1600438791,DE
+1600438796,1600438799,DE
+1600438804,1600438806,DE
+1600438812,1600438815,DE
+1600438820,1600438821,DE
+1600438823,1600438823,DE
+1600438828,1600438831,DE
+1600438836,1600438839,DE
+1600438844,1600438847,DE
+1600438852,1600438855,DE
+1600438860,1600438863,DE
+1600438868,1600438871,DE
+1600438876,1600438879,DE
+1600438884,1600438887,DE
+1600438892,1600438895,DE
+1600438901,1600438903,DE
+1600438908,1600438911,DE
1600442368,1600446463,DE
+1600451157,1600451159,IT
+1600451255,1600451255,IT
+1600451268,1600451271,IT
+1600451276,1600451279,IT
+1600451284,1600451284,IT
+1600451287,1600451287,IT
+1600453060,1600453063,ES
+1600453068,1600453071,ES
+1600453076,1600453077,ES
1600453120,1600453631,IT
+1600453703,1600453703,FR
+1600453708,1600453711,FR
+1600453716,1600453719,FR
+1600453724,1600453727,FR
+1600453732,1600453735,FR
+1600453740,1600453743,FR
+1600453748,1600453751,FR
+1600453764,1600453767,FR
+1600453772,1600453775,FR
+1600453780,1600453783,FR
+1600453788,1600453791,FR
+1600453796,1600453799,FR
+1600453804,1600453807,FR
+1600453812,1600453815,FR
+1600453828,1600453831,FR
+1600453836,1600453839,FR
+1600453844,1600453846,FR
+1600454660,1600454663,NL
+1600454670,1600454671,NL
+1600454916,1600454919,NL
+1600454924,1600454927,NL
+1600454932,1600454933,NL
+1600455020,1600455023,NL
+1600455028,1600455031,NL
+1600455037,1600455039,NL
+1600455044,1600455047,NL
+1600455053,1600455054,NL
+1600455060,1600455063,NL
+1600455068,1600455071,NL
+1600455076,1600455079,NL
+1600455110,1600455110,NL
+1600455116,1600455119,NL
+1600455124,1600455127,NL
+1600455132,1600455133,NL
+1600455135,1600455135,NL
+1600455140,1600455140,NL
+1600455260,1600455292,NL
+1600455294,1600455331,NL
+1600455336,1600455341,NL
+1600455343,1600455372,NL
+1600455377,1600455380,NL
+1600455385,1600455386,NL
+1600455393,1600455394,NL
1600456704,1600457727,US
+1600458116,1600458119,SE
+1600458124,1600458127,SE
+1600458132,1600458135,SE
+1600458140,1600458143,SE
+1600458148,1600458151,SE
+1600458156,1600458159,SE
+1600458164,1600458167,SE
+1600458180,1600458183,SE
+1600458188,1600458191,SE
+1600459780,1600459783,IT
+1600459788,1600459791,IT
+1600459796,1600459799,IT
+1600459804,1600459807,IT
+1600459812,1600459815,IT
+1600459820,1600459823,IT
+1600459828,1600459831,IT
+1600459836,1600459839,IT
+1600459844,1600459847,IT
+1600459925,1600459927,IT
+1600459932,1600459935,IT
+1600459940,1600459943,IT
+1600459948,1600459951,IT
+1600459956,1600459959,IT
+1600459964,1600459967,IT
+1600459972,1600459975,IT
+1600459980,1600459983,IT
+1600459997,1600459997,IT
+1600460092,1600460095,NL
+1600460100,1600460103,NL
+1600460108,1600460108,NL
+1600460110,1600460111,NL
+1600460116,1600460119,NL
+1600460124,1600460127,NL
+1600460132,1600460135,NL
+1600460140,1600460143,NL
+1600460148,1600460151,NL
+1600460156,1600460159,NL
+1600460165,1600460167,NL
+1600460173,1600460175,NL
+1600460181,1600460183,NL
+1600460188,1600460191,NL
+1600460196,1600460199,NL
+1600460204,1600460207,NL
+1600460212,1600460215,NL
+1600460548,1600460551,AT
+1600460559,1600460559,AT
+1600460564,1600460567,AT
+1600460572,1600460575,AT
+1600460580,1600460583,AT
+1600460588,1600460591,AT
+1600460596,1600460599,AT
+1600460604,1600460607,AT
+1600460612,1600460615,AT
+1600460620,1600460623,AT
+1600460628,1600460631,AT
+1600460636,1600460639,AT
+1600460644,1600460647,AT
+1600460652,1600460655,AT
+1600460660,1600460663,AT
+1600460668,1600460671,AT
+1600460676,1600460679,AT
+1600460684,1600460687,AT
+1600460692,1600460695,AT
+1600460700,1600460703,AT
+1600460708,1600460710,AT
+1600460716,1600460717,AT
+1600460719,1600460719,AT
+1600460724,1600460724,AT
+1600460726,1600460727,AT
+1600460734,1600460735,AT
+1600460740,1600460742,AT
+1600460750,1600460751,AT
+1600460756,1600460758,AT
+1600460764,1600460766,AT
+1600460772,1600460775,AT
+1600460780,1600460780,AT
+1600460782,1600460783,AT
+1600460788,1600460790,AT
+1600463415,1600463415,IT
+1600463420,1600463420,IT
+1600463422,1600463423,IT
+1600463453,1600463454,IT
+1600463460,1600463461,IT
+1600464654,1600464655,NL
+1600464660,1600464662,NL
+1600464669,1600464671,NL
+1600464676,1600464679,NL
+1600464684,1600464687,NL
+1600464693,1600464693,NL
+1600464700,1600464703,NL
+1600464708,1600464709,NL
+1600464711,1600464711,NL
+1600464750,1600464753,NL
+1600464820,1600464823,NL
+1600464828,1600464831,NL
+1600464836,1600464837,NL
+1600470532,1600470535,DE
+1600470540,1600470543,DE
+1600470548,1600470551,DE
+1600470556,1600470559,DE
+1600470564,1600470567,DE
+1600470572,1600470575,DE
+1600470580,1600470583,DE
+1600470588,1600470591,DE
+1600470596,1600470599,DE
+1600470604,1600470607,DE
+1600470612,1600470615,DE
+1600470620,1600470623,DE
+1600470628,1600470631,DE
+1600470636,1600470636,DE
+1600470795,1600470798,GB
+1600470803,1600470804,GB
+1600470883,1600470886,GB
+1600470891,1600470894,GB
+1600470899,1600470900,GB
+1600470915,1600470918,GB
+1600470923,1600470924,GB
+1600474416,1600474417,DE
+1600474423,1600474426,DE
+1600474431,1600474434,DE
+1600474439,1600474442,DE
+1600474447,1600474450,DE
+1600474456,1600474456,DE
+1600474458,1600474458,DE
+1600474463,1600474466,DE
+1600474471,1600474474,DE
+1600474479,1600474482,DE
+1600474487,1600474488,DE
+1600474490,1600474490,DE
+1600474501,1600474504,DE
+1600474509,1600474510,DE
+1600474512,1600474512,DE
+1600474517,1600474520,DE
+1600474525,1600474528,DE
+1600474533,1600474536,DE
+1600474541,1600474542,DE
+1600474565,1600474568,DE
+1600474573,1600474576,DE
+1600474581,1600474584,DE
+1600474884,1600474887,NL
+1600474892,1600474892,NL
+1600474894,1600474895,NL
+1600474900,1600474903,NL
+1600474908,1600474911,NL
+1600474916,1600474919,NL
+1600474924,1600474927,NL
+1600474932,1600474935,NL
+1600474940,1600474943,NL
+1600474948,1600474951,NL
+1600474959,1600474959,NL
+1600474966,1600474967,NL
+1600474972,1600474975,NL
+1600474980,1600474983,NL
+1600474988,1600474991,NL
+1600475012,1600475015,NL
+1600475020,1600475023,NL
+1600475028,1600475031,NL
+1600475036,1600475039,NL
+1600475044,1600475047,NL
+1600475052,1600475053,NL
+1600475908,1600475910,DE
+1600475916,1600475919,DE
+1600475924,1600475927,DE
+1600475932,1600475935,DE
+1600475940,1600475943,DE
+1600475948,1600475951,DE
+1600475956,1600475958,DE
+1600476036,1600476036,DE
+1600476038,1600476039,DE
+1600476044,1600476047,DE
+1600476052,1600476055,DE
+1600476060,1600476063,DE
+1600476068,1600476071,DE
+1600476076,1600476079,DE
+1600476084,1600476084,DE
+1600476100,1600476103,DE
+1600476108,1600476111,DE
+1600476116,1600476119,DE
+1600477188,1600477191,DE
+1600477196,1600477199,DE
+1600477204,1600477207,DE
+1600477212,1600477215,DE
+1600477220,1600477223,DE
+1600477228,1600477231,DE
+1600477236,1600477237,DE
+1600477239,1600477239,DE
+1600477244,1600477247,DE
+1600477252,1600477255,DE
+1600477260,1600477260,DE
+1600477972,1600477974,DE
+1600477980,1600477983,DE
+1600477988,1600477991,DE
+1600477996,1600477999,DE
+1600478004,1600478004,DE
+1600478006,1600478007,DE
+1600478012,1600478014,DE
+1600478020,1600478023,DE
+1600478028,1600478031,DE
+1600478037,1600478039,DE
+1600478044,1600478044,DE
+1600483934,1600483935,IT
+1600483940,1600483943,IT
+1600483948,1600483951,IT
+1600483956,1600483959,IT
+1600483964,1600483967,IT
+1600483972,1600483975,IT
+1600483980,1600483983,IT
+1600483989,1600483990,IT
+1600484013,1600484016,IT
+1600484021,1600484022,IT
+1600485148,1600485151,RU
+1600485157,1600485159,RU
+1600485164,1600485164,RU
+1600487822,1600487823,GB
+1600487828,1600487831,GB
+1600487836,1600487838,GB
+1600487844,1600487847,GB
+1600487852,1600487855,GB
+1600487860,1600487861,GB
+1600487863,1600487863,GB
+1600487868,1600487869,GB
+1600487871,1600487871,GB
+1600487876,1600487879,GB
+1600487884,1600487885,GB
+1600487892,1600487895,GB
+1600487900,1600487900,GB
+1600487902,1600487903,GB
+1600487909,1600487910,GB
+1600487916,1600487919,GB
+1600487924,1600487924,GB
+1600488708,1600488710,SE
+1600488716,1600488719,SE
+1600488724,1600488726,SE
+1600488780,1600488783,SE
+1600488788,1600488791,SE
+1600488796,1600488799,SE
+1600488804,1600488807,SE
+1600488812,1600488815,SE
+1600488820,1600488823,SE
+1600488828,1600488831,SE
+1600488836,1600488839,SE
+1600488844,1600488847,SE
+1600489542,1600489545,GB
+1600489550,1600489553,GB
+1600489558,1600489560,GB
+1600489574,1600489577,GB
+1600489582,1600489585,GB
+1600489590,1600489593,GB
+1600489598,1600489601,GB
+1600489606,1600489609,GB
+1600489614,1600489617,GB
+1600489622,1600489625,GB
+1600489630,1600489631,GB
+1600489732,1600489732,GB
+1600489742,1600489743,GB
+1600489748,1600489748,GB
+1600489750,1600489751,GB
+1600489756,1600489759,GB
+1600489764,1600489764,GB
+1600489766,1600489767,GB
+1600489772,1600489775,GB
+1600489782,1600489783,GB
+1600489788,1600489791,GB
+1600489796,1600489797,GB
+1600489799,1600489799,GB
+1600489804,1600489805,GB
+1600491165,1600491167,SE
+1600491172,1600491175,SE
+1600491180,1600491183,SE
+1600491188,1600491191,SE
+1600491196,1600491199,SE
+1600491204,1600491207,SE
+1600491212,1600491215,SE
+1600491220,1600491223,SE
+1600491228,1600491231,SE
+1600491236,1600491236,SE
+1600491332,1600491335,GB
+1600491340,1600491343,GB
+1600491348,1600491351,GB
+1600491356,1600491356,GB
+1600500996,1600500999,IT
+1600501004,1600501007,IT
+1600501012,1600501013,IT
+1600501015,1600501015,IT
+1600501023,1600501023,IT
+1600501028,1600501029,IT
+1600501031,1600501031,IT
+1600501036,1600501039,IT
+1600501044,1600501046,IT
+1600501052,1600501055,IT
+1600501060,1600501060,IT
+1600501062,1600501063,IT
+1600501068,1600501071,IT
+1600501076,1600501079,IT
+1600501084,1600501085,IT
+1600501087,1600501087,IT
1600520192,1600651263,SK
1600651264,1600684031,GE
1600684032,1600749567,RU
@@ -51583,7 +58421,8 @@
1603080192,1603080703,KE
1603080704,1603080831,US
1603080832,1603080959,SE
-1603080960,1603081215,DE
+1603080960,1603081087,DE
+1603081088,1603081215,KE
1603081216,1603081247,GB
1603081248,1603081255,NO
1603081256,1603081263,FI
@@ -51621,8 +58460,8 @@
1603141632,1603145727,ES
1603145728,1603146239,IL
1603146240,1603146751,US
-1603146752,1603149311,IL
-1603149312,1603149567,NL
+1603146752,1603149055,IL
+1603149056,1603149567,NL
1603149568,1603149823,IL
1603149824,1603153919,RU
1603153920,1603158015,NL
@@ -51916,10 +58755,14 @@
1607573504,1607575551,SE
1607575552,1607577599,GB
1607577600,1607581695,SE
-1607581696,1607588863,DK
+1607581696,1607585791,DK
+1607585792,1607587839,SE
+1607587840,1607588863,DK
1607588864,1607589887,SE
-1607589888,1607598079,DK
-1607598080,1607600127,GB
+1607589888,1607591935,DK
+1607591936,1607596031,SE
+1607596032,1607598079,DK
+1607598080,1607599103,GB
1607600384,1607600639,DE
1607600640,1607600895,AT
1607600896,1607601151,CH
@@ -51936,6 +58779,7 @@
1607606272,1607606783,DE
1607606784,1607607039,GB
1607607296,1607607551,PL
+1607607552,1607608319,IT
1607608320,1607608575,HU
1607608576,1607608831,SK
1607610368,1607611391,GR
@@ -51976,8 +58820,12 @@
1607663616,1607701433,NL
1607701434,1607701434,RS
1607701435,1607729151,NL
-1607729152,1607786495,SY
-1607786496,1607794687,EG
+1607729152,1607772159,SY
+1607772160,1607773183,EG
+1607773184,1607773184,SY
+1607773185,1607774207,EG
+1607774208,1607782399,SY
+1607782400,1607794687,EG
1607794688,1607860223,RU
1607860224,1607861247,ES
1607861248,1607862271,PL
@@ -51997,8 +58845,7 @@
1607876608,1607877631,FI
1607877632,1607878655,BG
1607878656,1607879679,TR
-1607879680,1607879935,US
-1607879936,1607880703,NL
+1607879680,1607880703,NL
1607880704,1607881727,RU
1607881728,1607882751,HK
1607882752,1607883775,IT
@@ -52007,7 +58854,7 @@
1607885824,1607886847,NO
1607886848,1607887871,BG
1607887872,1607888895,ES
-1607888896,1607889919,DE
+1607888896,1607889919,US
1607889920,1607890943,RU
1607890944,1607891967,HU
1607891968,1607892991,PL
@@ -52020,9 +58867,9 @@
1607899136,1607900159,NL
1607900160,1607901183,MD
1607901184,1607902207,DE
-1607902208,1607903231,NL
1607903232,1607904255,DE
-1607904256,1607907327,GB
+1607904256,1607905279,IR
+1607905280,1607907327,GB
1607907328,1607908351,RO
1607908352,1607909375,MD
1607909376,1607910399,DE
@@ -52031,7 +58878,8 @@
1607912448,1607913471,RS
1607913472,1607914495,UZ
1607914496,1607915519,LB
-1607915520,1607918591,DE
+1607915520,1607916287,US
+1607916288,1607918591,DE
1607918592,1607919615,DK
1607919616,1607920639,UA
1607920640,1607921663,DE
@@ -52040,7 +58888,7 @@
1607923712,1607924735,NL
1607924736,1607925759,MD
1607925760,1607926783,RU
-1607926784,1607927807,NL
+1607926784,1607927807,UA
1607927808,1607929855,RU
1607929856,1607930879,SE
1607930880,1607933951,PL
@@ -52089,8 +58937,7 @@
1607983104,1607984127,GB
1607984128,1607985151,RU
1607985152,1607986175,PL
-1607986176,1607986431,FR
-1607986432,1607986687,GB
+1607986176,1607986687,FR
1607986688,1607988223,RU
1607988224,1607989247,KG
1607989248,1607991295,RU
@@ -52107,15 +58954,85 @@
1611009024,1611010047,NL
1611010048,1611036671,US
1611036672,1611037183,NL
-1611037184,1611042815,US
+1611037184,1611037620,US
+1611037621,1611037623,BR
+1611037624,1611037627,US
+1611037628,1611037631,BR
+1611037632,1611037637,US
+1611037638,1611037639,BR
+1611037640,1611037643,US
+1611037644,1611037644,BR
+1611037645,1611037645,US
+1611037646,1611037647,BR
+1611037648,1611037651,US
+1611037652,1611037655,BR
+1611037656,1611037660,US
+1611037661,1611037663,BR
+1611037664,1611037667,US
+1611037668,1611037671,BR
+1611037672,1611037675,US
+1611037676,1611037679,BR
+1611037680,1611037683,US
+1611037684,1611037685,BR
+1611037686,1611037686,US
+1611037687,1611037687,BR
+1611037688,1611042815,US
1611042816,1611046911,NL
1611046912,1611084543,US
-1611084544,1611085311,NL
-1611085312,1611086335,US
+1611084544,1611084653,NL
+1611084654,1611084655,GB
+1611084656,1611084673,NL
+1611084674,1611084677,GB
+1611084678,1611084681,NL
+1611084682,1611084683,GB
+1611084684,1611084684,NL
+1611084685,1611084685,GB
+1611084686,1611084689,NL
+1611084690,1611084693,GB
+1611084694,1611084697,NL
+1611084698,1611084701,GB
+1611084702,1611084705,NL
+1611084706,1611084709,GB
+1611084710,1611084713,NL
+1611084714,1611084717,GB
+1611084718,1611084721,NL
+1611084722,1611084725,GB
+1611084726,1611084729,NL
+1611084730,1611084730,GB
+1611084731,1611084745,NL
+1611084746,1611084749,GB
+1611084750,1611084753,NL
+1611084754,1611084757,GB
+1611084758,1611084761,NL
+1611084762,1611084762,GB
+1611084763,1611085311,NL
+1611085312,1611085606,US
+1611085607,1611085607,HK
+1611085608,1611085611,US
+1611085612,1611085615,HK
+1611085616,1611085619,US
+1611085620,1611085623,HK
+1611085624,1611085627,US
+1611085628,1611085630,HK
+1611085631,1611085635,US
+1611085636,1611085639,HK
+1611085640,1611085643,US
+1611085644,1611085647,HK
+1611085648,1611085651,US
+1611085652,1611085655,HK
+1611085656,1611085659,US
+1611085660,1611085663,HK
+1611085664,1611086335,US
1611086336,1611086847,NL
1611086848,1611116543,US
1611116544,1611117567,NL
-1611117568,1611218943,US
+1611117568,1611135838,US
+1611135839,1611135844,JP
+1611135845,1611135845,US
+1611135846,1611135856,JP
+1611135857,1611135857,US
+1611135858,1611135858,JP
+1611135859,1611218943,US
1611218944,1611227135,KH
1611227136,1611235327,CA
1611235328,1611243519,OM
@@ -52123,13 +59040,149 @@
1611247616,1611247871,HK
1611247872,1611248127,AU
1611248128,1611251711,HK
-1611251712,1611692543,US
+1611251712,1611256319,US
+1611256320,1611256831,SG
+1611256832,1611692543,US
1611692544,1611693567,NL
-1611693568,1611764735,US
-1611764736,1611764991,NL
-1611764992,1611765759,US
-1611765760,1611766015,NL
-1611766016,1611777023,US
+1611693568,1611745394,US
+1611745395,1611745397,SG
+1611745398,1611745425,US
+1611745426,1611745433,SG
+1611745434,1611745434,US
+1611745435,1611745439,SG
+1611745440,1611753008,US
+1611753009,1611753011,JP
+1611753012,1611753144,US
+1611753145,1611753146,JP
+1611753147,1611753150,US
+1611753151,1611753154,JP
+1611753155,1611753158,US
+1611753159,1611753162,JP
+1611753163,1611753166,US
+1611753167,1611753170,JP
+1611753171,1611753174,US
+1611753175,1611753178,JP
+1611753179,1611753182,US
+1611753183,1611753186,JP
+1611753187,1611753190,US
+1611753191,1611753193,JP
+1611753194,1611753198,US
+1611753199,1611753202,JP
+1611753203,1611764735,US
+1611764736,1611764739,NL
+1611764740,1611764743,PL
+1611764744,1611764747,NL
+1611764748,1611764748,PL
+1611764749,1611764749,NL
+1611764750,1611764751,PL
+1611764752,1611764755,NL
+1611764756,1611764759,PL
+1611764760,1611764763,NL
+1611764764,1611764767,PL
+1611764768,1611764771,NL
+1611764772,1611764775,PL
+1611764776,1611764779,NL
+1611764780,1611764783,PL
+1611764784,1611764789,NL
+1611764790,1611764791,PL
+1611764792,1611764795,NL
+1611764796,1611764798,PL
+1611764799,1611764939,NL
+1611764940,1611764943,PL
+1611764944,1611764948,NL
+1611764949,1611764951,PL
+1611764952,1611764955,NL
+1611764956,1611764959,PL
+1611764960,1611764963,NL
+1611764964,1611764967,PL
+1611764968,1611764971,NL
+1611764972,1611764972,PL
+1611764973,1611764991,NL
+1611764992,1611765563,US
+1611765564,1611765591,JP
+1611765592,1611765614,US
+1611765615,1611765615,JP
+1611765616,1611765654,US
+1611765655,1611765658,JP
+1611765659,1611765662,US
+1611765663,1611765666,JP
+1611765667,1611765671,US
+1611765672,1611765674,JP
+1611765675,1611765679,US
+1611765680,1611765680,JP
+1611765681,1611765759,US
+1611765760,1611765806,NL
+1611765807,1611765808,DE
+1611765809,1611765812,NL
+1611765813,1611765813,DE
+1611765814,1611765814,NL
+1611765815,1611765816,DE
+1611765817,1611765820,NL
+1611765821,1611765824,DE
+1611765825,1611765828,NL
+1611765829,1611765832,DE
+1611765833,1611765836,NL
+1611765837,1611765839,DE
+1611765840,1611765844,NL
+1611765845,1611765847,DE
+1611765848,1611765852,NL
+1611765853,1611765853,DE
+1611765854,1611765854,NL
+1611765855,1611765856,DE
+1611765857,1611765860,NL
+1611765861,1611765864,DE
+1611765865,1611765868,NL
+1611765869,1611765872,DE
+1611765873,1611765876,NL
+1611765877,1611765880,DE
+1611765881,1611765884,NL
+1611765885,1611765887,DE
+1611765888,1611765892,NL
+1611765893,1611765896,DE
+1611765897,1611765900,NL
+1611765901,1611765902,DE
+1611765903,1611765908,NL
+1611765909,1611765912,DE
+1611765913,1611765916,NL
+1611765917,1611765917,DE
+1611765918,1611765918,NL
+1611765919,1611765919,DE
+1611765920,1611766015,NL
+1611766016,1611772931,US
+1611772932,1611772943,SG
+1611772944,1611772947,US
+1611772948,1611772951,SG
+1611772952,1611772955,US
+1611772956,1611772959,SG
+1611772960,1611772963,US
+1611772964,1611772965,SG
+1611772966,1611773082,US
+1611773083,1611773089,SG
+1611773090,1611773091,US
+1611773092,1611773097,SG
+1611773098,1611773101,US
+1611773102,1611773106,SG
+1611773107,1611773110,US
+1611773111,1611773111,SG
+1611773112,1611773476,US
+1611773477,1611773479,IN
+1611773480,1611773483,US
+1611773484,1611773485,IN
+1611773486,1611773486,US
+1611773487,1611773487,IN
+1611773488,1611773531,US
+1611773532,1611773535,IN
+1611773536,1611773539,US
+1611773540,1611773541,IN
+1611773542,1611773563,US
+1611773564,1611773566,IN
+1611773567,1611773567,US
+1611773568,1611773568,IN
+1611773569,1611773569,US
+1611773570,1611773585,IN
+1611773586,1611773592,US
+1611773593,1611773596,IN
+1611773597,1611777023,US
1611777024,1611777279,NL
1611777280,1611778047,US
1611778048,1611778559,NL
@@ -52140,8 +59193,7 @@
1612611328,1612636159,CA
1612636160,1613471743,US
1613471744,1613479935,JM
-1613479936,1613480191,CA
-1613480192,1613488127,US
+1613479936,1613488127,US
1613488128,1613492223,CA
1613492224,1613504511,US
1613504512,1613529087,CA
@@ -52201,7 +59253,9 @@
1652334208,1652334215,CA
1652334216,1652334535,US
1652334536,1652334543,CA
-1652334544,1652481535,US
+1652334544,1652336179,US
+1652336180,1652336183,CA
+1652336184,1652481535,US
1652481536,1652481791,CN
1652481792,1652555775,US
1652555776,1652621311,SE
@@ -52229,9 +59283,12 @@
1654582016,1654582271,CN
1654582272,1654584575,US
1654584576,1654585343,JP
-1654585344,1654585855,US
-1654585856,1654586367,DE
-1654586368,1654587391,NL
+1654585344,1654585855,CZ
+1654585856,1654586111,US
+1654586112,1654586367,DE
+1654586368,1654586623,NL
+1654586624,1654586879,US
+1654586880,1654587391,NL
1654587392,1654595583,US
1654595584,1654596095,CA
1654596096,1654596215,US
@@ -52264,7 +59321,10 @@
1666365440,1666366463,AU
1666366464,1666731329,US
1666731330,1666731330,FR
-1666731331,1673527295,US
+1666731331,1672822783,US
+1672822784,1672826879,NL
+1672826880,1672828927,BR
+1672828928,1673527295,US
1673527296,1673560063,CA
1673560064,1673986047,US
1673986048,1674051583,CA
@@ -52414,8 +59474,8 @@
1703411712,1703673855,TW
1703673856,1703935999,JP
1703936000,1704984575,CN
-1704984576,1705488383,AU
-1705488384,1705489407,HK
+1704984576,1705488895,AU
+1705488896,1705489407,HK
1705489408,1705490431,SG
1705490432,1705491455,GB
1705491456,1705494527,HK
@@ -52450,8 +59510,18 @@
1710972672,1710972927,TW
1710972928,1711210495,CN
1711210496,1711276031,ID
+1714946048,1715470335,EG
+1715765248,1715767295,LY
+1715767296,1715768319,ZM
+1715771392,1715772415,CD
+1715776512,1715777535,UG
+1715778560,1715779583,ZA
+1715779584,1715780607,CG
+1715780608,1715781631,BF
+1715781632,1715798015,MG
1715798016,1715830783,LY
-1715838976,1715847167,ZA
+1715836928,1715837951,BF
+1715837952,1715847167,ZA
1715863552,1715994623,MW
1715994624,1716518911,MA
1716518912,1717043199,UG
@@ -52465,10 +59535,12 @@
1719683072,1719684095,NG
1719684096,1719685119,ZW
1719685120,1719697407,ZA
-1719699456,1719701503,ZA
+1719697408,1719699455,SO
+1719699456,1719706623,ZA
1719706624,1719707647,SC
1719707648,1719709695,ZA
1719709696,1719711743,EG
+1719713792,1719730175,NG
1719730176,1719738367,ZA
1719739392,1719740415,NG
1719740416,1719746559,ZA
@@ -52476,10 +59548,9 @@
1719754752,1719762943,ZA
1719762944,1719771135,US
1719771136,1719779327,ZA
-1719779328,1719793663,US
-1719793664,1719795711,ZA
-1719795712,1719799807,NG
-1719799808,1719803903,ZA
+1719779328,1719795711,US
+1719795712,1719798783,NG
+1719798784,1719803903,ZA
1719803904,1719805951,RW
1719805952,1719807999,ZA
1719808000,1719809023,SC
@@ -52488,7 +59559,9 @@
1719811072,1719812095,MZ
1719812096,1719814143,AO
1719814144,1719820799,ZA
+1719820800,1719821055,GH
1719821056,1719821311,NG
+1719821312,1719821567,ZM
1719821568,1719821823,MW
1719821824,1719822079,KE
1719822080,1719822335,NG
@@ -52496,7 +59569,7 @@
1719844864,1719853055,AO
1719853056,1719855103,CI
1719855104,1719856127,ML
-1719856128,1719857151,ZA
+1719856128,1719859199,ZA
1719859200,1719861247,SD
1719861248,1719865343,ZA
1719865344,1719865855,GH
@@ -52666,6 +59739,7 @@
1723203584,1723269119,ZA
1723269120,1723334655,LR
1723334656,1723858943,EG
+1724383232,1724385279,US
1724715556,1724715556,MU
1727004672,1727266815,TN
1727266816,1727528959,CM
@@ -52790,7 +59864,7 @@
1728309248,1728310271,NZ
1728310272,1728310783,AU
1728310784,1728311295,US
-1728311296,1728312319,MP
+1728311296,1728312319,GU
1728312320,1728315391,VN
1728315392,1728316415,ID
1728316416,1728317439,MY
@@ -52822,8 +59896,13 @@
1728345088,1728346111,BD
1728346112,1728346367,AU
1728346368,1728346623,NZ
-1728346624,1728347135,AU
-1728347136,1728348159,SG
+1728346624,1728347147,AU
+1728347148,1728347148,SG
+1728347149,1728347416,AU
+1728347417,1728347417,SG
+1728347418,1728347421,AU
+1728347422,1728347422,SG
+1728347423,1728348159,AU
1728348160,1728349183,VN
1728349184,1728350207,AU
1728350208,1728351231,NZ
@@ -52909,8 +59988,7 @@
1728421888,1728422911,JP
1728422912,1728423935,AU
1728423936,1728424959,CN
-1728424960,1728425215,IT
-1728425216,1728425983,AF
+1728424960,1728425983,AF
1728425984,1728427007,JP
1728427008,1728428031,MY
1728428032,1728430079,IN
@@ -53445,11 +60523,7 @@
1728918528,1728919551,KR
1728919552,1728920575,AU
1728920576,1728921599,JP
-1728921600,1728922099,AF
-1728922100,1728922100,DE
-1728922101,1728922103,AF
-1728922104,1728922104,DE
-1728922105,1728922623,AF
+1728921600,1728922623,AF
1728922624,1728923647,AU
1728923648,1728924159,HK
1728924160,1728924671,MY
@@ -53591,8 +60665,7 @@
1729041408,1729042687,HK
1729042688,1729043199,SG
1729043200,1729044479,HK
-1729044480,1729045247,JP
-1729045248,1729045503,PH
+1729044480,1729045503,JP
1729045504,1729046015,ID
1729046272,1729046527,JP
1729046528,1729047551,BD
@@ -53878,8 +60951,7 @@
1729314816,1729317887,CN
1729317888,1729319423,ID
1729319424,1729319935,SG
-1729319936,1729320447,US
-1729320448,1729320959,CA
+1729319936,1729320959,US
1729320960,1729321983,IN
1729321984,1729323007,AU
1729323008,1729324031,VN
@@ -54562,8 +61634,9 @@
1730019328,1730020351,ID
1730020352,1730021375,HK
1730022400,1730023423,IN
-1730023424,1730023679,US
-1730023680,1730024447,HK
+1730023424,1730023935,US
+1730023936,1730024191,HK
+1730024192,1730024447,US
1730024448,1730025471,CN
1730025472,1730026495,HK
1730026496,1730027519,BD
@@ -54877,8 +61950,8 @@
1730599424,1730599935,VU
1730600960,1730605055,CN
1730605056,1730607103,IN
-1730608128,1730608639,CN
-1730608640,1730609151,HK
+1730608128,1730608895,CN
+1730608896,1730609151,HK
1730609152,1730610687,IN
1730610688,1730610943,MY
1730610944,1730611199,SG
@@ -54953,7 +62026,8 @@
1730706432,1730708479,JP
1730708480,1730711807,TH
1730711808,1730712063,SG
-1730712064,1730713599,TH
+1730712064,1730712575,TH
+1730712576,1730713599,RU
1730713600,1730714623,HK
1730715648,1730716671,HK
1730716672,1730717183,PH
@@ -55448,8 +62522,7 @@
1731385344,1731386111,ID
1731386112,1731386367,IN
1731386368,1731394559,CN
-1731394560,1731394815,KR
-1731394816,1731395583,HK
+1731394560,1731395583,HK
1731395584,1731396095,IN
1731396096,1731396607,BD
1731396608,1731397631,JP
@@ -55905,8 +62978,8 @@
1731940352,1731942655,IN
1731942656,1731942911,JP
1731942912,1731943423,HK
-1731943424,1731943679,KR
-1731943680,1731944447,CH
+1731943424,1731944191,KR
+1731944192,1731944447,CH
1731944448,1731945471,IN
1731945472,1731946495,CN
1731946496,1731947519,IN
@@ -56122,8 +63195,8 @@
1732318720,1732318975,AU
1732318976,1732322303,IN
1732322304,1732322559,SG
-1732322560,1732322815,HK
-1732322816,1732323327,CN
+1732322560,1732323071,HK
+1732323072,1732323327,RU
1732323328,1732324351,HK
1732324352,1732325375,JP
1732325376,1732337663,CN
@@ -56296,7 +63369,9 @@
1732546560,1732547583,JP
1732547584,1732549631,KR
1732549632,1732550655,PH
-1732550656,1732552703,AU
+1732550656,1732552191,AU
+1732552192,1732552447,US
+1732552448,1732552703,AU
1732552704,1732554751,HK
1732554752,1732555263,IN
1732555264,1732555775,AU
@@ -57191,8 +64266,7 @@
1733544960,1733545983,BD
1733545984,1733546495,AU
1733546496,1733550079,IN
-1733550080,1733550335,IT
-1733550336,1733551103,PH
+1733550080,1733551103,PH
1733551104,1733551615,NP
1733551616,1733551871,AU
1733551872,1733552127,HK
@@ -57234,7 +64308,8 @@
1733593088,1733594111,HK
1733594112,1733596159,ID
1733596160,1733597183,PK
-1733597184,1733598207,US
+1733597184,1733597695,HK
+1733597696,1733598207,SG
1733598208,1733599231,BD
1733599232,1733600255,LK
1733600256,1733601023,IN
@@ -57799,9 +64874,9 @@
1734236160,1734237183,CN
1734237184,1734238207,NZ
1734238208,1734239231,ID
-1734239232,1734239743,IN
+1734239232,1734239487,IN
1734239744,1734239999,PK
-1734240000,1734240255,HK
+1734240000,1734240255,JP
1734240256,1734243327,IN
1734243328,1734244351,CN
1734244352,1734246399,ID
@@ -57977,8 +65052,9 @@
1734424064,1734424575,AU
1734424576,1734429695,CN
1734429696,1734430719,ID
-1734430720,1734431487,HK
-1734431488,1734431743,KR
+1734430720,1734431231,HK
+1734431232,1734431487,CN
+1734431488,1734431743,HK
1734431744,1734435839,IN
1734435840,1734436607,ID
1734436608,1734438399,IN
@@ -58019,7 +65095,8 @@
1734474496,1734474751,ID
1734474752,1734475775,AU
1734476800,1734477823,TH
-1734477824,1734478847,HK
+1734477824,1734478591,HK
+1734478592,1734478847,NL
1734478848,1734479359,AU
1734479360,1734479871,HK
1734479872,1734480383,TW
@@ -58300,9 +65377,7 @@
1734738432,1734738687,IN
1734738688,1734738943,JP
1734738944,1734739199,RU
-1734739200,1734739455,HK
-1734739456,1734739711,JP
-1734739712,1734739967,HK
+1734739200,1734739967,HK
1734739968,1734740991,AU
1734740992,1734742015,ID
1734742016,1734743039,US
@@ -58361,8 +65436,7 @@
1734790144,1734791167,BD
1734791168,1734793215,CN
1734793216,1734794239,BD
-1734794240,1734794495,AF
-1734794496,1734794751,DE
+1734794240,1734794751,AF
1734794752,1734797823,AU
1734797824,1734798079,IN
1734798080,1734798335,SG
@@ -58559,7 +65633,7 @@
1734965248,1734966271,HK
1734966272,1734967295,IN
1734967296,1734968319,ID
-1734968320,1734968575,CN
+1734968320,1734968575,TH
1734968576,1734968831,ID
1734968832,1734969087,TW
1734969088,1734969343,CN
@@ -59167,7 +66241,7 @@
1735556096,1735557119,KR
1735557120,1735557631,AF
1735557632,1735558143,AU
-1735558144,1735558399,HK
+1735558144,1735558399,CN
1735558400,1735558655,TW
1735558656,1735559167,JP
1735559168,1735561471,ID
@@ -59401,7 +66475,8 @@
1735751680,1735752703,HK
1735752704,1735753727,IN
1735753728,1735754751,SG
-1735754752,1735755775,HK
+1735754752,1735755263,CN
+1735755264,1735755775,HK
1735755776,1735756799,CN
1735756800,1735757055,PH
1735757056,1735757311,MY
@@ -59706,7 +66781,9 @@
1736060160,1736060415,TH
1736060416,1736060927,BD
1736060928,1736061951,CN
-1736061952,1736062207,FR
+1736061952,1736062111,FR
+1736062112,1736062119,JP
+1736062120,1736062207,FR
1736062208,1736062463,IN
1736062464,1736062719,AU
1736062720,1736062975,ID
@@ -59847,9 +66924,7 @@
1736207872,1736208383,BD
1736208384,1736210431,ID
1736210432,1736211455,TW
-1736211456,1736211711,US
-1736211712,1736211967,AU
-1736211968,1736213503,US
+1736211456,1736213503,US
1736213504,1736214527,NZ
1736214528,1736215551,ID
1736215552,1736216575,IN
@@ -59915,8 +66990,7 @@
1736278016,1736279039,IN
1736279040,1736280063,CN
1736280064,1736281087,BD
-1736281088,1736282623,PK
-1736282624,1736283135,US
+1736281088,1736283135,PK
1736283136,1736284159,PH
1736284160,1736284671,AU
1736284672,1736285183,IN
@@ -60282,6 +67356,135 @@
1736708608,1736709119,ID
1736709120,1736710143,TW
1736710144,1736712191,IN
+1736712192,1736714239,KR
+1736714240,1736716287,TW
+1736716288,1736717311,HK
+1736717312,1736718335,ID
+1736718336,1736719359,IN
+1736719360,1736725503,CN
+1736725504,1736726527,SG
+1736726528,1736728831,BD
+1736728832,1736729087,NZ
+1736729088,1736729599,AF
+1736729600,1736730623,TW
+1736730624,1736735743,CN
+1736735744,1736735999,ID
+1736736000,1736736255,PH
+1736736256,1736736767,AU
+1736736768,1736737791,IN
+1736737792,1736738815,TW
+1736738816,1736739839,SG
+1736739840,1736740863,ID
+1736740864,1736743167,IN
+1736743168,1736743935,BD
+1736743936,1736744959,TW
+1736744960,1736747007,CN
+1736747008,1736747263,PH
+1736747264,1736747519,AU
+1736747520,1736749055,IN
+1736749056,1736751615,BD
+1736751616,1736751871,IN
+1736751872,1736752127,BD
+1736752128,1736753151,CN
+1736753152,1736754175,SG
+1736754176,1736755199,IN
+1736755200,1736755711,ID
+1736755712,1736755967,HK
+1736755968,1736757247,IN
+1736757248,1736759295,CN
+1736759296,1736762367,BD
+1736762368,1736762879,IN
+1736762880,1736763391,ID
+1736763392,1736763647,NZ
+1736763648,1736763903,IN
+1736763904,1736764415,CN
+1736764416,1736765439,ID
+1736765440,1736767487,IN
+1736767488,1736768511,BD
+1736768512,1736769535,AU
+1736769536,1736769791,IN
+1736769792,1736770303,AU
+1736770304,1736770559,ID
+1736770560,1736771583,BD
+1736771584,1736772607,IN
+1736772608,1736773631,CN
+1736773632,1736775167,ID
+1736775168,1736775423,IN
+1736775424,1736775679,AU
+1736775680,1736776703,ID
+1736776704,1736777727,IN
+1736777728,1736778751,BD
+1736778752,1736779007,ID
+1736779008,1736779519,IN
+1736779520,1736779775,AU
+1736779776,1736780799,CN
+1736780800,1736781823,TW
+1736781824,1736782847,IN
+1736782848,1736783871,AU
+1736783872,1736784127,ID
+1736784128,1736784895,IN
+1736784896,1736785919,ID
+1736785920,1736786943,IN
+1736786944,1736787967,ID
+1736787968,1736788735,HK
+1736788736,1736788991,AF
+1736788992,1736790015,BD
+1736790016,1736790527,PH
+1736790528,1736791039,AF
+1736791040,1736792063,FR
+1736792064,1736794111,HK
+1736794112,1736795135,AU
+1736795136,1736798207,VN
+1736798208,1736798719,IN
+1736798720,1736799231,ID
+1736799232,1736799487,IN
+1736799488,1736800255,NZ
+1736800256,1736802303,IN
+1736802304,1736803327,CN
+1736803328,1736803839,MY
+1736803840,1736804351,BD
+1736804352,1736805375,CN
+1736805376,1736806399,BD
+1736806400,1736808447,ID
+1736808448,1736810495,TW
+1736810496,1736810751,ID
+1736810752,1736811007,AU
+1736811008,1736811519,IN
+1736811520,1736812543,BD
+1736812544,1736813567,IN
+1736813568,1736814591,BD
+1736814592,1736815615,CN
+1736815616,1736815871,IN
+1736815872,1736816127,AU
+1736816128,1736816639,VG
+1736816640,1736817663,BD
+1736817664,1736818175,AU
+1736818176,1736818687,HK
+1736818688,1736819711,MY
+1736819712,1736820735,TW
+1736820736,1736823807,BD
+1736823808,1736824063,AU
+1736824064,1736824319,BD
+1736824320,1736824831,IN
+1736824832,1736825855,BT
+1736825856,1736826367,IN
+1736826368,1736826879,ID
+1736826880,1736827903,VN
+1736827904,1736828927,IN
+1736828928,1736829951,CN
+1736829952,1736830463,BD
+1736830464,1736830975,AU
+1736830976,1736831487,KR
+1736831488,1736831999,MM
+1736832000,1736833023,TW
+1736833024,1736834047,IN
+1736834048,1736835071,BD
+1736835072,1736836095,PK
+1736836096,1736838143,IN
+1736838144,1736838399,CN
+1736838400,1736838655,PH
+1736838656,1736839167,AU
+1736839168,1736839423,ID
1740636160,1740644351,CN
1740644352,1740645375,IN
1740645376,1740647423,HK
@@ -60305,9 +67508,7 @@
1740678144,1740679167,CN
1740679168,1740680447,IN
1740680448,1740680703,AU
-1740680960,1740681127,AU
-1740681128,1740681135,NZ
-1740681136,1740681215,AU
+1740680960,1740681215,AU
1740681216,1740681983,HK
1740681984,1740682239,AU
1740682240,1740683263,KH
@@ -60353,8 +67554,8 @@
1740733440,1740733951,HK
1740733952,1740734207,SG
1740734208,1740734719,HK
-1740734720,1740735487,JP
-1740735488,1740736511,HK
+1740734720,1740735231,JP
+1740735232,1740736511,HK
1740736512,1740737535,NZ
1740737536,1740740607,CN
1740740608,1740742655,IN
@@ -60638,8 +67839,8 @@
1741073408,1741074431,IN
1741074432,1741075455,TL
1741075456,1741076479,CN
-1741076480,1741077247,NZ
-1741077248,1741077503,IN
+1741076480,1741076991,NZ
+1741076992,1741077503,IN
1741077504,1741079551,HK
1741079552,1741081599,CN
1741081600,1741082623,HK
@@ -60706,9 +67907,7 @@
1741186048,1741188607,IN
1741188608,1741188863,US
1741188864,1741189119,IN
-1741189120,1741189887,HK
-1741189888,1741190143,JP
-1741190144,1741191167,HK
+1741189120,1741191167,HK
1741191168,1741192191,VN
1741192192,1741193215,HK
1741193216,1741194239,ID
@@ -60782,7 +67981,7 @@
1741413376,1741413631,HK
1741413632,1741413887,SG
1741413888,1741414143,JP
-1741414144,1741414399,MY
+1741414144,1741414399,SG
1741414400,1741423615,IN
1741423616,1741425663,MY
1741425664,1741425919,TH
@@ -60842,7 +68041,7 @@
1741490944,1741491199,HK
1741491200,1741492223,IN
1741492224,1741493247,LA
-1741493248,1741494271,HK
+1741493248,1741494271,CN
1741494272,1741495295,KH
1741495296,1741497343,AU
1741497856,1741498111,NZ
@@ -61187,7 +68386,9 @@
1741900800,1741902335,IN
1741902336,1741902847,ID
1741902848,1741904895,IN
-1741904896,1741905919,HK
+1741904896,1741905487,HK
+1741905488,1741905495,PH
+1741905496,1741905919,HK
1741905920,1741907967,CN
1741907968,1741911039,IN
1741911040,1741911551,JP
@@ -61469,9 +68670,7 @@
1742244864,1742247935,IN
1742247936,1742248959,CN
1742248960,1742249983,IN
-1742249984,1742250145,DE
-1742250146,1742250146,IT
-1742250147,1742250239,DE
+1742249984,1742250239,IT
1742250240,1742257151,IN
1742257152,1742257407,ID
1742257408,1742257663,NZ
@@ -61553,7 +68752,8 @@
1742423040,1742424063,PH
1742424064,1742425343,ID
1742425344,1742425599,US
-1742425600,1742426111,CA
+1742425600,1742425855,CA
+1742425856,1742426111,US
1742426112,1742427135,HK
1742427136,1742432255,CN
1742432256,1742433279,HK
@@ -61632,9 +68832,7 @@
1742559232,1742589951,CN
1742589952,1742590975,IN
1742590976,1742596095,VN
-1742596096,1742596351,JP
-1742596352,1742596607,IN
-1742596608,1742597119,JP
+1742596096,1742597119,IN
1742598144,1742599167,SG
1742599168,1742599423,IN
1742599424,1742599679,AU
@@ -61658,7 +68856,7 @@
1742714880,1742715903,AU
1742715904,1742734335,CN
1742734336,1742735359,IN
-1742735360,1742736383,JP
+1742735360,1742736383,PH
1742736384,1742737407,PK
1742738432,1742738687,HK
1742738688,1742738943,AU
@@ -61972,8 +69170,8 @@
1743062528,1743063039,AU
1743063040,1743064063,SG
1743064064,1743064575,ID
-1743065088,1743065343,TW
-1743065344,1743066111,IN
+1743065088,1743065599,TW
+1743065600,1743066111,IN
1743066112,1743067135,CN
1743067136,1743068159,IN
1743068160,1743069183,HK
@@ -62076,8 +69274,7 @@
1743158272,1743159295,MY
1743160320,1743161343,TH
1743161344,1743162367,HK
-1743162368,1743162623,BZ
-1743162624,1743162879,AQ
+1743162368,1743162879,BZ
1743162880,1743163135,KR
1743163136,1743163391,BZ
1743163392,1743166463,IN
@@ -62279,9 +69476,7 @@
1743364096,1743364607,IN
1743365120,1743366143,HK
1743366144,1743367167,IN
-1743367168,1743367679,SG
-1743367680,1743367935,ID
-1743367936,1743368191,SG
+1743367168,1743368191,SG
1743369216,1743369727,MY
1743369728,1743369983,NP
1743369984,1743370239,AF
@@ -62511,6 +69706,7 @@
1743682560,1743683583,MY
1743683584,1743683839,JP
1743683840,1743684095,AU
+1743684096,1743684351,JP
1743684352,1743684607,AU
1743684608,1743685631,CN
1743685632,1743686655,ID
@@ -62843,7 +70039,7 @@
1744067584,1744068607,JP
1744068608,1744069631,ID
1744069632,1744070143,SG
-1744070144,1744070399,AU
+1744070144,1744070399,GB
1744070400,1744070655,SG
1744070656,1744071679,JP
1744071680,1744072703,KR
@@ -62857,7 +70053,7 @@
1744080896,1744080999,AF
1744081000,1744081000,DE
1744081001,1744081219,AF
-1744081220,1744081220,IT
+1744081220,1744081220,DE
1744081221,1744081919,AF
1744081920,1744082943,HK
1744082944,1744083711,US
@@ -62974,7 +70170,8 @@
1744202240,1744202495,IN
1744202496,1744202751,ID
1744202752,1744203775,PK
-1744203776,1744204799,HK
+1744203776,1744204415,HK
+1744204416,1744204799,MY
1744204800,1744205823,ID
1744205824,1744207871,CN
1744207872,1744208127,AU
@@ -63099,7 +70296,8 @@
1744315392,1744316415,HK
1744316416,1744317439,KH
1744317440,1744318463,AU
-1744319488,1744320511,NL
+1744319488,1744319743,IN
+1744319744,1744320511,NL
1744320512,1744321535,ID
1744321536,1744322559,IN
1744322560,1744323583,CN
@@ -63369,7 +70567,8 @@
1744610048,1744610303,ID
1744610304,1744612351,IN
1744612352,1744613375,CN
-1744613376,1744614399,PH
+1744613376,1744613631,PG
+1744613632,1744614399,PH
1744615424,1744616447,IN
1744616448,1744616959,ID
1744616960,1744617471,AU
@@ -63414,8 +70613,7 @@
1744655872,1744656383,ID
1744656384,1744657407,VN
1744657408,1744658431,AU
-1744658432,1744659199,CA
-1744659200,1744659455,FR
+1744658432,1744659455,CA
1744659456,1744660479,JP
1744660480,1744660735,IN
1744660736,1744660991,MY
@@ -63507,7 +70705,7 @@
1744750592,1744752639,IN
1744752640,1744753663,HK
1744754688,1744755711,VN
-1744755712,1744756735,HK
+1744755712,1744756735,CN
1744756736,1744757759,PF
1744757760,1744758271,NZ
1744758272,1744758527,IN
@@ -63605,8 +70803,8 @@
1747274752,1747275775,US
1747275776,1747276799,CA
1747276800,1747283967,US
-1747283968,1747284991,CA
-1747284992,1747293183,US
+1747283968,1747286015,CA
+1747286016,1747293183,US
1747293184,1747294207,CA
1747294208,1747304447,US
1747304448,1747308543,CA
@@ -63847,19 +71045,79 @@
1749413888,1749422079,NL
1749422080,1749438463,US
1749438464,1749446655,NL
-1749446656,1749449727,US
+1749446656,1749449219,US
+1749449220,1749449223,KR
+1749449224,1749449228,US
+1749449229,1749449231,KR
+1749449232,1749449235,US
+1749449236,1749449236,KR
+1749449237,1749449237,US
+1749449238,1749449238,KR
+1749449239,1749449243,US
+1749449244,1749449247,KR
+1749449248,1749449251,US
+1749449252,1749449255,KR
+1749449256,1749449274,US
+1749449275,1749449278,KR
+1749449279,1749449282,US
+1749449283,1749449286,KR
+1749449287,1749449290,US
+1749449291,1749449294,KR
+1749449295,1749449298,US
+1749449299,1749449302,KR
+1749449303,1749449306,US
+1749449307,1749449309,KR
+1749449310,1749449314,US
+1749449315,1749449318,KR
+1749449319,1749449322,US
+1749449323,1749449326,KR
+1749449327,1749449330,US
+1749449331,1749449334,KR
+1749449335,1749449338,US
+1749449339,1749449342,KR
+1749449343,1749449346,US
+1749449347,1749449350,KR
+1749449351,1749449354,US
+1749449355,1749449358,KR
+1749449359,1749449362,US
+1749449363,1749449366,KR
+1749449367,1749449370,US
+1749449371,1749449374,KR
+1749449375,1749449378,US
+1749449379,1749449382,KR
+1749449383,1749449386,US
+1749449387,1749449390,KR
+1749449391,1749449394,US
+1749449395,1749449398,KR
+1749449399,1749449402,US
+1749449403,1749449406,KR
+1749449407,1749449410,US
+1749449411,1749449414,KR
+1749449415,1749449418,US
+1749449419,1749449422,KR
+1749449423,1749449426,US
+1749449427,1749449427,KR
+1749449428,1749449727,US
1749449728,1749450239,NL
1749450240,1749497855,US
1749497856,1749498879,NL
1749498880,1749508095,US
1749508096,1749516287,NL
-1749516288,1749537791,US
+1749516288,1749517059,US
+1749517060,1749517073,AU
+1749517074,1749517077,US
+1749517078,1749517084,AU
+1749517085,1749537791,US
1749537792,1749539327,NL
-1749539328,1749567121,US
-1749567122,1749567122,AU
-1749567123,1749567130,US
-1749567131,1749567131,AU
-1749567132,1749586943,US
+1749539328,1749567067,US
+1749567068,1749567078,AU
+1749567079,1749567079,US
+1749567080,1749567080,AU
+1749567081,1749567121,US
+1749567122,1749567137,AU
+1749567138,1749567164,US
+1749567165,1749567165,AU
+1749567166,1749586943,US
1749586944,1749588479,NL
1749588480,1749590015,US
1749590016,1749598207,NL
@@ -63877,17 +71135,77 @@
1749686528,1749686783,NL
1749686784,1749696511,US
1749696512,1749696767,NL
-1749696768,1749698559,US
+1749696768,1749698113,US
+1749698114,1749698117,JP
+1749698118,1749698121,US
+1749698122,1749698125,JP
+1749698126,1749698129,US
+1749698130,1749698133,JP
+1749698134,1749698135,US
+1749698136,1749698139,JP
+1749698140,1749698143,US
+1749698144,1749698145,JP
+1749698146,1749698146,US
+1749698147,1749698147,JP
+1749698148,1749698151,US
+1749698152,1749698155,JP
+1749698156,1749698159,US
+1749698160,1749698163,JP
+1749698164,1749698167,US
+1749698168,1749698168,JP
+1749698169,1749698233,US
+1749698234,1749698234,JP
+1749698235,1749698235,US
+1749698236,1749698237,JP
+1749698238,1749698241,US
+1749698242,1749698244,JP
+1749698245,1749698277,US
+1749698278,1749698280,JP
+1749698281,1749698284,US
+1749698285,1749698288,JP
+1749698289,1749698292,US
+1749698293,1749698296,JP
+1749698297,1749698559,US
1749698560,1749718015,NL
1749718016,1749749247,US
1749749248,1749749759,NL
1749749760,1749757951,US
1749757952,1749767167,NL
-1749767168,1749767679,US
+1749767168,1749767209,US
+1749767210,1749767212,LK
+1749767213,1749767218,US
+1749767219,1749767219,LK
+1749767220,1749767220,US
+1749767221,1749767221,LK
+1749767222,1749767225,US
+1749767226,1749767227,LK
+1749767228,1749767679,US
1749767680,1749769215,NL
1749769216,1749770239,US
1749770240,1749778431,NL
-1749778432,1749790719,US
+1749778432,1749788929,US
+1749788930,1749788930,JP
+1749788931,1749788967,US
+1749788968,1749788968,JP
+1749788969,1749789030,US
+1749789031,1749789031,JP
+1749789032,1749789035,US
+1749789036,1749789039,JP
+1749789040,1749789043,US
+1749789044,1749789047,JP
+1749789048,1749789051,US
+1749789052,1749789053,JP
+1749789054,1749789059,US
+1749789060,1749789076,JP
+1749789077,1749789077,US
+1749789078,1749789079,JP
+1749789080,1749789081,US
+1749789082,1749789100,JP
+1749789101,1749789106,US
+1749789107,1749789110,JP
+1749789111,1749789114,US
+1749789115,1749789115,JP
+1749789116,1749790719,US
1749790720,1749794815,NL
1749794816,1749803007,US
1749803008,1749807103,NL
@@ -63911,7 +71229,135 @@
1749931008,1749932031,NL
1749932032,1749983231,US
1749983232,1749987327,NL
-1749987328,1750079999,US
+1749987328,1749989941,US
+1749989942,1749989943,JP
+1749989944,1749989947,US
+1749989948,1749989951,JP
+1749989952,1749989955,US
+1749989956,1749989959,JP
+1749989960,1749989963,US
+1749989964,1749989967,JP
+1749989968,1749989971,US
+1749989972,1749989975,JP
+1749989976,1749989979,US
+1749989980,1749989983,JP
+1749989984,1749989987,US
+1749989988,1749989990,JP
+1749989991,1749990029,US
+1749990030,1749990032,JP
+1749990033,1749990037,US
+1749990038,1749990041,JP
+1749990042,1749990045,US
+1749990046,1749990049,JP
+1749990050,1749990053,US
+1749990054,1749990057,JP
+1749990058,1749990061,US
+1749990062,1749990065,JP
+1749990066,1749990164,US
+1749990165,1749990165,JP
+1749990166,1749990203,US
+1749990204,1749990207,JP
+1749990208,1749990211,US
+1749990212,1749990215,JP
+1749990216,1749990219,US
+1749990220,1749990223,JP
+1749990224,1749990227,US
+1749990228,1749990231,JP
+1749990232,1749990235,US
+1749990236,1749990236,JP
+1749990237,1749990237,US
+1749990238,1749990239,JP
+1749990240,1749990243,US
+1749990244,1749990247,JP
+1749990248,1749990251,US
+1749990252,1749990255,JP
+1749990256,1749990259,US
+1749990260,1749990262,JP
+1749990263,1749990266,US
+1749990267,1749990267,JP
+1749990268,1749990299,US
+1749990300,1749990303,JP
+1749990304,1749990307,US
+1749990308,1749990309,JP
+1749990310,1749990310,US
+1749990311,1749990311,JP
+1749990312,1749990315,US
+1749990316,1749990319,JP
+1749990320,1749990323,US
+1749990324,1749990324,JP
+1749990325,1750008372,US
+1750008373,1750008375,JP
+1750008376,1750008379,US
+1750008380,1750008383,JP
+1750008384,1750008387,US
+1750008388,1750008391,JP
+1750008392,1750008395,US
+1750008396,1750008399,JP
+1750008400,1750008403,US
+1750008404,1750008407,JP
+1750008408,1750008411,US
+1750008412,1750008415,JP
+1750008416,1750008419,US
+1750008420,1750008420,JP
+1750008421,1750008421,US
+1750008422,1750008423,JP
+1750008424,1750008427,US
+1750008428,1750008428,JP
+1750008429,1750008579,US
+1750008580,1750008583,JP
+1750008584,1750008587,US
+1750008588,1750008591,JP
+1750008592,1750008595,US
+1750008596,1750008599,JP
+1750008600,1750008603,US
+1750008604,1750008607,JP
+1750008608,1750008611,US
+1750008612,1750008615,JP
+1750008616,1750008619,US
+1750008620,1750008621,JP
+1750008622,1750008629,US
+1750008630,1750008631,JP
+1750008632,1750008635,US
+1750008636,1750008637,JP
+1750008638,1750008638,US
+1750008639,1750008639,JP
+1750008640,1750008643,US
+1750008644,1750008644,JP
+1750008645,1750010420,US
+1750010421,1750010423,JP
+1750010424,1750010427,US
+1750010428,1750010431,JP
+1750010432,1750010435,US
+1750010436,1750010439,JP
+1750010440,1750010443,US
+1750010444,1750010447,JP
+1750010448,1750010451,US
+1750010452,1750010455,JP
+1750010456,1750010459,US
+1750010460,1750010463,JP
+1750010464,1750010467,US
+1750010468,1750010471,JP
+1750010472,1750010475,US
+1750010476,1750010479,JP
+1750010480,1750010487,US
+1750010488,1750010488,JP
+1750010489,1750010515,US
+1750010516,1750010518,JP
+1750010519,1750010524,US
+1750010525,1750010527,JP
+1750010528,1750010531,US
+1750010532,1750010535,JP
+1750010536,1750010539,US
+1750010540,1750010543,JP
+1750010544,1750010547,US
+1750010548,1750010551,JP
+1750010552,1750010563,US
+1750010564,1750010567,JP
+1750010568,1750010571,US
+1750010572,1750010575,JP
+1750010576,1750010579,US
+1750010580,1750010583,JP
+1750010584,1750079999,US
1750080000,1750080511,NL
1750080512,1750096895,US
1750096896,1750106111,NL
@@ -63924,7 +71370,33 @@
1750151168,1750152191,US
1750152192,1750153727,NL
1750153728,1750154239,US
-1750154240,1750154751,NL
+1750154240,1750154323,NL
+1750154324,1750154324,PL
+1750154325,1750154366,NL
+1750154367,1750154367,PL
+1750154368,1750154379,NL
+1750154380,1750154383,PL
+1750154384,1750154387,NL
+1750154388,1750154391,PL
+1750154392,1750154395,NL
+1750154396,1750154399,PL
+1750154400,1750154403,NL
+1750154404,1750154405,PL
+1750154406,1750154406,NL
+1750154407,1750154407,PL
+1750154408,1750154411,NL
+1750154412,1750154415,PL
+1750154416,1750154419,NL
+1750154420,1750154422,PL
+1750154423,1750154427,NL
+1750154428,1750154429,PL
+1750154430,1750154430,NL
+1750154431,1750154431,PL
+1750154432,1750154460,NL
+1750154461,1750154462,PL
+1750154463,1750154467,NL
+1750154468,1750154471,PL
+1750154472,1750154751,NL
1750154752,1750155263,US
1750155264,1750159359,NL
1750159360,1750163455,US
@@ -63949,7 +71421,41 @@
1750350848,1750351871,NL
1750351872,1750372351,US
1750372352,1750373375,NL
-1750373376,1750374399,US
+1750373376,1750373891,US
+1750373892,1750373895,HK
+1750373896,1750373899,US
+1750373900,1750373903,HK
+1750373904,1750373907,US
+1750373908,1750373911,HK
+1750373912,1750373915,US
+1750373916,1750373917,HK
+1750373918,1750373918,US
+1750373919,1750373919,HK
+1750373920,1750373923,US
+1750373924,1750373927,HK
+1750373928,1750373931,US
+1750373932,1750373935,HK
+1750373936,1750373942,US
+1750373943,1750373943,HK
+1750373944,1750373947,US
+1750373948,1750373951,HK
+1750373952,1750373955,US
+1750373956,1750373959,HK
+1750373960,1750373963,US
+1750373964,1750373964,HK
+1750373965,1750373983,US
+1750373984,1750373987,HK
+1750373988,1750373991,US
+1750373992,1750373995,HK
+1750373996,1750373999,US
+1750374000,1750374003,HK
+1750374004,1750374007,US
+1750374008,1750374011,HK
+1750374012,1750374015,US
+1750374016,1750374019,HK
+1750374020,1750374023,US
+1750374024,1750374026,HK
+1750374027,1750374399,US
1750374400,1750374911,NL
1750374912,1750384639,US
1750384640,1750388735,NL
@@ -63957,14 +71463,66 @@
1750405120,1750413311,NL
1750413312,1750413823,US
1750413824,1750415359,NL
-1750415360,1750443519,US
-1750443520,1750444031,NL
+1750415360,1750443267,US
+1750443268,1750443271,JP
+1750443272,1750443275,US
+1750443276,1750443279,JP
+1750443280,1750443283,US
+1750443284,1750443285,JP
+1750443286,1750443305,US
+1750443306,1750443309,JP
+1750443310,1750443313,US
+1750443314,1750443317,JP
+1750443318,1750443321,US
+1750443322,1750443325,JP
+1750443326,1750443329,US
+1750443330,1750443333,JP
+1750443334,1750443337,US
+1750443338,1750443341,JP
+1750443342,1750443345,US
+1750443346,1750443349,JP
+1750443350,1750443353,US
+1750443354,1750443355,JP
+1750443356,1750443519,US
+1750443520,1750443679,NL
+1750443680,1750443682,DE
+1750443683,1750443686,NL
+1750443687,1750443690,DE
+1750443691,1750443694,NL
+1750443695,1750443698,DE
+1750443699,1750443702,NL
+1750443703,1750443706,DE
+1750443707,1750443710,NL
+1750443711,1750443714,DE
+1750443715,1750443718,NL
+1750443719,1750443722,DE
+1750443723,1750443726,NL
+1750443727,1750443730,DE
+1750443731,1750443734,NL
+1750443735,1750443738,DE
+1750443739,1750443751,NL
+1750443752,1750443752,DE
+1750443753,1750444031,NL
1750444032,1750446079,US
1750446080,1750450175,NL
1750450176,1750465535,US
1750465536,1750482943,NL
1750482944,1750494719,US
-1750494720,1750495231,NL
+1750494720,1750494979,NL
+1750494980,1750494983,GB
+1750494984,1750494987,NL
+1750494988,1750494988,GB
+1750494989,1750494989,NL
+1750494990,1750494991,GB
+1750494992,1750494995,NL
+1750494996,1750494999,GB
+1750495000,1750495003,NL
+1750495004,1750495007,GB
+1750495008,1750495012,NL
+1750495013,1750495015,GB
+1750495016,1750495019,NL
+1750495020,1750495021,GB
+1750495022,1750495231,NL
1750495232,1750523903,US
1750523904,1750533119,NL
1750533120,1750573055,US
@@ -64004,7 +71562,39 @@
1750995456,1750999039,US
1750999040,1751007231,NL
1751007232,1751015423,US
-1751015424,1751016703,NL
+1751015424,1751016467,NL
+1751016468,1751016471,PL
+1751016472,1751016475,NL
+1751016476,1751016479,PL
+1751016480,1751016483,NL
+1751016484,1751016487,PL
+1751016488,1751016491,NL
+1751016492,1751016495,PL
+1751016496,1751016499,NL
+1751016500,1751016503,PL
+1751016504,1751016507,NL
+1751016508,1751016511,PL
+1751016512,1751016515,NL
+1751016516,1751016519,PL
+1751016520,1751016523,NL
+1751016524,1751016527,PL
+1751016528,1751016531,NL
+1751016532,1751016535,PL
+1751016536,1751016539,NL
+1751016540,1751016543,PL
+1751016544,1751016547,NL
+1751016548,1751016551,PL
+1751016552,1751016555,NL
+1751016556,1751016559,PL
+1751016560,1751016571,NL
+1751016572,1751016575,PL
+1751016576,1751016579,NL
+1751016580,1751016583,PL
+1751016584,1751016587,NL
+1751016588,1751016591,PL
+1751016592,1751016595,NL
+1751016596,1751016599,PL
+1751016600,1751016703,NL
1751016704,1751018495,US
1751018496,1751019519,NL
1751019520,1751031807,US
@@ -64012,18 +71602,82 @@
1751040512,1751104511,US
1751104512,1751105023,NL
1751105024,1751121919,US
-1751121920,1751122431,NL
+1751121920,1751122179,NL
+1751122180,1751122183,DE
+1751122184,1751122187,NL
+1751122188,1751122191,DE
+1751122192,1751122195,NL
+1751122196,1751122199,DE
+1751122200,1751122203,NL
+1751122204,1751122207,DE
+1751122208,1751122211,NL
+1751122212,1751122215,DE
+1751122216,1751122219,NL
+1751122220,1751122223,DE
+1751122224,1751122227,NL
+1751122228,1751122229,DE
+1751122230,1751122431,NL
1751122432,1751122943,US
1751122944,1751124479,NL
1751124480,1751125503,US
1751125504,1751134207,NL
1751134208,1751144959,US
-1751144960,1751146495,NL
+1751144960,1751145267,NL
+1751145268,1751145271,AT
+1751145272,1751145275,NL
+1751145276,1751145279,AT
+1751145280,1751145283,NL
+1751145284,1751145287,AT
+1751145288,1751145291,NL
+1751145292,1751145295,AT
+1751145296,1751145299,NL
+1751145300,1751145303,AT
+1751145304,1751145307,NL
+1751145308,1751145311,AT
+1751145312,1751145315,NL
+1751145316,1751145319,AT
+1751145320,1751145323,NL
+1751145324,1751145327,AT
+1751145328,1751145331,NL
+1751145332,1751145335,AT
+1751145336,1751146495,NL
1751146496,1751154687,US
1751154688,1751163391,NL
-1751163392,1751253503,US
+1751163392,1751165268,US
+1751165269,1751165271,NZ
+1751165272,1751165275,US
+1751165276,1751165279,NZ
+1751165280,1751165283,US
+1751165284,1751165286,NZ
+1751165287,1751165291,US
+1751165292,1751165292,NZ
+1751165293,1751207475,US
+1751207476,1751207484,AU
+1751207485,1751207499,US
+1751207500,1751207503,AU
+1751207504,1751207507,US
+1751207508,1751207510,AU
+1751207511,1751207518,US
+1751207519,1751207519,AU
+1751207520,1751207523,US
+1751207524,1751207527,AU
+1751207528,1751207531,US
+1751207532,1751207532,AU
+1751207533,1751253503,US
1751253504,1751253759,NL
-1751253760,1751255551,US
+1751253760,1751253819,US
+1751253820,1751253823,AU
+1751253824,1751253827,US
+1751253828,1751253828,AU
+1751253829,1751253829,US
+1751253830,1751253831,AU
+1751253832,1751253836,US
+1751253837,1751253839,AU
+1751253840,1751253843,US
+1751253844,1751253847,AU
+1751253848,1751253851,US
+1751253852,1751253854,AU
+1751253855,1751255551,US
1751255552,1751256063,NL
1751256064,1751285759,US
1751285760,1751289855,NL
@@ -64036,10 +71690,218 @@
1751506176,1751506431,HK
1751506432,1751510015,US
1751510016,1751521279,NL
-1751521280,1751523327,US
+1751521280,1751521283,US
+1751521284,1751521287,JP
+1751521288,1751521291,US
+1751521292,1751521294,JP
+1751521295,1751521412,US
+1751521413,1751521415,JP
+1751521416,1751521419,US
+1751521420,1751521423,JP
+1751521424,1751521427,US
+1751521428,1751521431,JP
+1751521432,1751521435,US
+1751521436,1751521439,JP
+1751521440,1751521443,US
+1751521444,1751521447,JP
+1751521448,1751521451,US
+1751521452,1751521455,JP
+1751521456,1751521459,US
+1751521460,1751521463,JP
+1751521464,1751521467,US
+1751521468,1751521468,JP
+1751521469,1751523327,US
1751523328,1751531519,NL
-1751531520,1751598847,US
-1751598848,1751640319,NL
+1751531520,1751577635,US
+1751577636,1751577639,AU
+1751577640,1751577643,US
+1751577644,1751577647,AU
+1751577648,1751577651,US
+1751577652,1751577655,AU
+1751577656,1751577659,US
+1751577660,1751577663,AU
+1751577664,1751577667,US
+1751577668,1751577671,AU
+1751577672,1751577675,US
+1751577676,1751577679,AU
+1751577680,1751577683,US
+1751577684,1751577687,AU
+1751577688,1751577691,US
+1751577692,1751577693,AU
+1751577694,1751577699,US
+1751577700,1751577703,AU
+1751577704,1751577707,US
+1751577708,1751577711,AU
+1751577712,1751577715,US
+1751577716,1751577719,AU
+1751577720,1751577723,US
+1751577724,1751577727,AU
+1751577728,1751577731,US
+1751577732,1751577735,AU
+1751577736,1751577739,US
+1751577740,1751577743,AU
+1751577744,1751577747,US
+1751577748,1751577751,AU
+1751577752,1751577755,US
+1751577756,1751577757,AU
+1751577758,1751598771,US
+1751598772,1751598775,MY
+1751598776,1751598779,US
+1751598780,1751598783,MY
+1751598784,1751598787,US
+1751598788,1751598791,MY
+1751598792,1751598795,US
+1751598796,1751598799,MY
+1751598800,1751598803,US
+1751598804,1751598807,MY
+1751598808,1751598811,US
+1751598812,1751598815,MY
+1751598816,1751598819,US
+1751598820,1751598820,MY
+1751598821,1751598821,US
+1751598822,1751598823,MY
+1751598824,1751598827,US
+1751598828,1751598829,MY
+1751598830,1751598847,US
+1751598848,1751598851,NL
+1751598852,1751598855,GB
+1751598856,1751598859,NL
+1751598860,1751598863,GB
+1751598864,1751598867,NL
+1751598868,1751598870,GB
+1751598871,1751598875,NL
+1751598876,1751598878,GB
+1751598879,1751598883,NL
+1751598884,1751598887,GB
+1751598888,1751598891,NL
+1751598892,1751598893,GB
+1751598894,1751598899,NL
+1751598900,1751598902,GB
+1751598903,1751598908,NL
+1751598909,1751598911,GB
+1751598912,1751598915,NL
+1751598916,1751598919,GB
+1751598920,1751598923,NL
+1751598924,1751598924,GB
+1751598925,1751598928,NL
+1751598929,1751598931,GB
+1751598932,1751598936,NL
+1751598937,1751598939,GB
+1751598940,1751598944,NL
+1751598945,1751598948,GB
+1751598949,1751598953,NL
+1751598954,1751598956,GB
+1751598957,1751598960,NL
+1751598961,1751598964,GB
+1751598965,1751598968,NL
+1751598969,1751598969,GB
+1751598970,1751598970,NL
+1751598971,1751598971,GB
+1751598972,1751598976,NL
+1751598977,1751598979,GB
+1751598980,1751598984,NL
+1751598985,1751598986,GB
+1751598987,1751598987,NL
+1751598988,1751598988,GB
+1751598989,1751598992,NL
+1751598993,1751598993,GB
+1751598994,1751598995,NL
+1751598996,1751598996,GB
+1751598997,1751599000,NL
+1751599001,1751599002,GB
+1751599003,1751599003,NL
+1751599004,1751599004,GB
+1751599005,1751599008,NL
+1751599009,1751599011,GB
+1751599012,1751599016,NL
+1751599017,1751599020,GB
+1751599021,1751599025,NL
+1751599026,1751599028,GB
+1751599029,1751599032,NL
+1751599033,1751599033,GB
+1751599034,1751599035,NL
+1751599036,1751599036,GB
+1751599037,1751599040,NL
+1751599041,1751599044,GB
+1751599045,1751599051,NL
+1751599052,1751599052,GB
+1751599053,1751599396,NL
+1751599397,1751599399,AT
+1751599400,1751599403,NL
+1751599404,1751599407,AT
+1751599408,1751599411,NL
+1751599412,1751599415,AT
+1751599416,1751599419,NL
+1751599420,1751599423,AT
+1751599424,1751599427,NL
+1751599428,1751599431,AT
+1751599432,1751599435,NL
+1751599436,1751599439,AT
+1751599440,1751599443,NL
+1751599444,1751599447,AT
+1751599448,1751599451,NL
+1751599452,1751599455,AT
+1751599456,1751599459,NL
+1751599460,1751599463,AT
+1751599464,1751640067,NL
+1751640068,1751640071,GB
+1751640072,1751640075,NL
+1751640076,1751640079,GB
+1751640080,1751640083,NL
+1751640084,1751640087,GB
+1751640088,1751640091,NL
+1751640092,1751640095,GB
+1751640096,1751640101,NL
+1751640102,1751640103,GB
+1751640104,1751640107,NL
+1751640108,1751640111,GB
+1751640112,1751640115,NL
+1751640116,1751640118,GB
+1751640119,1751640123,NL
+1751640124,1751640127,GB
+1751640128,1751640131,NL
+1751640132,1751640135,GB
+1751640136,1751640139,NL
+1751640140,1751640140,GB
+1751640141,1751640144,NL
+1751640145,1751640148,GB
+1751640149,1751640152,NL
+1751640153,1751640156,GB
+1751640157,1751640160,NL
+1751640161,1751640163,GB
+1751640164,1751640168,NL
+1751640169,1751640172,GB
+1751640173,1751640176,NL
+1751640177,1751640180,GB
+1751640181,1751640184,NL
+1751640185,1751640188,GB
+1751640189,1751640192,NL
+1751640193,1751640196,GB
+1751640197,1751640200,NL
+1751640201,1751640204,GB
+1751640205,1751640208,NL
+1751640209,1751640212,GB
+1751640213,1751640216,NL
+1751640217,1751640220,GB
+1751640221,1751640224,NL
+1751640225,1751640228,GB
+1751640229,1751640232,NL
+1751640233,1751640236,GB
+1751640237,1751640240,NL
+1751640241,1751640244,GB
+1751640245,1751640248,NL
+1751640249,1751640250,GB
+1751640251,1751640275,NL
+1751640276,1751640279,GB
+1751640280,1751640283,NL
+1751640284,1751640287,GB
+1751640288,1751640291,NL
+1751640292,1751640295,GB
+1751640296,1751640299,NL
+1751640300,1751640303,GB
+1751640304,1751640307,NL
+1751640308,1751640308,GB
+1751640309,1751640319,NL
1751640320,1751641087,US
1751641088,1751641599,NL
1751641600,1751642111,US
@@ -64056,44 +71918,380 @@
1751801856,1751810047,NL
1751810048,1751834623,US
1751834624,1751838719,NL
-1751838720,1751875583,US
+1751838720,1751859123,US
+1751859124,1751859127,JP
+1751859128,1751859131,US
+1751859132,1751859135,JP
+1751859136,1751859139,US
+1751859140,1751859143,JP
+1751859144,1751859147,US
+1751859148,1751859151,JP
+1751859152,1751859155,US
+1751859156,1751859159,JP
+1751859160,1751859163,US
+1751859164,1751859167,JP
+1751859168,1751859171,US
+1751859172,1751859173,JP
+1751859174,1751875583,US
1751875584,1751883775,NL
1751883776,1751884799,US
1751884800,1751885823,NL
1751885824,1751896575,US
1751896576,1751896831,NL
1751896832,1751897087,US
-1751897088,1751899135,NL
+1751897088,1751898164,NL
+1751898165,1751898167,DE
+1751898168,1751898172,NL
+1751898173,1751898175,DE
+1751898176,1751898179,NL
+1751898180,1751898180,DE
+1751898181,1751898181,NL
+1751898182,1751898183,DE
+1751898184,1751898187,NL
+1751898188,1751898191,DE
+1751898192,1751898195,NL
+1751898196,1751898199,DE
+1751898200,1751898203,NL
+1751898204,1751898204,DE
+1751898205,1751898222,NL
+1751898223,1751898223,DE
+1751898224,1751898227,NL
+1751898228,1751898230,DE
+1751898231,1751898235,NL
+1751898236,1751898239,DE
+1751898240,1751898243,NL
+1751898244,1751898246,DE
+1751898247,1751898434,NL
+1751898435,1751898437,DE
+1751898438,1751898442,NL
+1751898443,1751898446,DE
+1751898447,1751898450,NL
+1751898451,1751898452,DE
+1751898453,1751898453,NL
+1751898454,1751898454,DE
+1751898455,1751898458,NL
+1751898459,1751898462,DE
+1751898463,1751898466,NL
+1751898467,1751898470,DE
+1751898471,1751898474,NL
+1751898475,1751898478,DE
+1751898479,1751898483,NL
+1751898484,1751898486,DE
+1751898487,1751898490,NL
+1751898491,1751898491,DE
+1751898492,1751898492,NL
+1751898493,1751898494,DE
+1751898495,1751898498,NL
+1751898499,1751898502,DE
+1751898503,1751898506,NL
+1751898507,1751898510,DE
+1751898511,1751898514,NL
+1751898515,1751898518,DE
+1751898519,1751898522,NL
+1751898523,1751898526,DE
+1751898527,1751898530,NL
+1751898531,1751898534,DE
+1751898535,1751898538,NL
+1751898539,1751898542,DE
+1751898543,1751899135,NL
1751899136,1751900159,US
1751900160,1751912447,NL
1751912448,1751916543,US
-1751916544,1751928831,NL
+1751916544,1751926531,NL
+1751926532,1751926535,DE
+1751926536,1751926539,NL
+1751926540,1751926543,DE
+1751926544,1751926547,NL
+1751926548,1751926551,DE
+1751926552,1751926555,NL
+1751926556,1751926559,DE
+1751926560,1751926563,NL
+1751926564,1751926567,DE
+1751926568,1751926571,NL
+1751926572,1751926575,DE
+1751926576,1751926579,NL
+1751926580,1751926583,DE
+1751926584,1751926587,NL
+1751926588,1751926591,DE
+1751926592,1751926595,NL
+1751926596,1751926599,DE
+1751926600,1751926603,NL
+1751926604,1751926604,DE
+1751926605,1751928831,NL
1751928832,1751946239,US
1751946240,1751947263,NL
1751947264,1751949311,US
1751949312,1751957503,NL
-1751957504,1751987711,US
+1751957504,1751987219,US
+1751987220,1751987223,NZ
+1751987224,1751987227,US
+1751987228,1751987231,NZ
+1751987232,1751987235,US
+1751987236,1751987239,NZ
+1751987240,1751987243,US
+1751987244,1751987245,NZ
+1751987246,1751987278,US
+1751987279,1751987279,NZ
+1751987280,1751987283,US
+1751987284,1751987287,NZ
+1751987288,1751987292,US
+1751987293,1751987295,NZ
+1751987296,1751987299,US
+1751987300,1751987303,NZ
+1751987304,1751987307,US
+1751987308,1751987311,NZ
+1751987312,1751987315,US
+1751987316,1751987318,NZ
+1751987319,1751987323,US
+1751987324,1751987327,NZ
+1751987328,1751987331,US
+1751987332,1751987335,NZ
+1751987336,1751987340,US
+1751987341,1751987343,NZ
+1751987344,1751987347,US
+1751987348,1751987348,NZ
+1751987349,1751987711,US
1751987712,1751989247,NL
1751989248,1751990271,US
1751990272,1752006655,NL
1752006656,1752037887,US
-1752037888,1752038143,NL
-1752038144,1752087807,US
+1752037888,1752037997,NL
+1752037998,1752038000,CH
+1752038001,1752038005,NL
+1752038006,1752038009,CH
+1752038010,1752038013,NL
+1752038014,1752038017,CH
+1752038018,1752038021,NL
+1752038022,1752038022,CH
+1752038023,1752038029,NL
+1752038030,1752038033,CH
+1752038034,1752038037,NL
+1752038038,1752038041,CH
+1752038042,1752038045,NL
+1752038046,1752038049,CH
+1752038050,1752038053,NL
+1752038054,1752038057,CH
+1752038058,1752038061,NL
+1752038062,1752038065,CH
+1752038066,1752038069,NL
+1752038070,1752038071,CH
+1752038072,1752038072,NL
+1752038073,1752038073,CH
+1752038074,1752038077,NL
+1752038078,1752038081,CH
+1752038082,1752038085,NL
+1752038086,1752038087,CH
+1752038088,1752038143,NL
+1752038144,1752038147,US
+1752038148,1752038150,AE
+1752038151,1752038155,US
+1752038156,1752038159,AE
+1752038160,1752038163,US
+1752038164,1752038166,AE
+1752038167,1752038171,US
+1752038172,1752038172,AE
+1752038173,1752087807,US
1752087808,1752088063,NL
1752088064,1752159231,US
1752159232,1752161279,NL
1752161280,1752162303,US
1752162304,1752170495,NL
-1752170496,1752300031,US
-1752300032,1752300287,NL
+1752170496,1752171427,US
+1752171428,1752171431,JP
+1752171432,1752171435,US
+1752171436,1752171439,JP
+1752171440,1752171443,US
+1752171444,1752171447,JP
+1752171448,1752171451,US
+1752171452,1752171455,JP
+1752171456,1752171459,US
+1752171460,1752171463,JP
+1752171464,1752171467,US
+1752171468,1752171471,JP
+1752171472,1752171475,US
+1752171476,1752171479,JP
+1752171480,1752171483,US
+1752171484,1752171487,JP
+1752171488,1752171491,US
+1752171492,1752171495,JP
+1752171496,1752171499,US
+1752171500,1752171503,JP
+1752171504,1752171507,US
+1752171508,1752171511,JP
+1752171512,1752300031,US
+1752300032,1752300035,NL
+1752300036,1752300039,ES
+1752300040,1752300043,NL
+1752300044,1752300047,ES
+1752300048,1752300051,NL
+1752300052,1752300055,ES
+1752300056,1752300059,NL
+1752300060,1752300063,ES
+1752300064,1752300067,NL
+1752300068,1752300071,ES
+1752300072,1752300075,NL
+1752300076,1752300078,ES
+1752300079,1752300099,NL
+1752300100,1752300103,ES
+1752300104,1752300107,NL
+1752300108,1752300111,ES
+1752300112,1752300115,NL
+1752300116,1752300119,ES
+1752300120,1752300123,NL
+1752300124,1752300124,ES
+1752300125,1752300131,NL
+1752300132,1752300135,ES
+1752300136,1752300139,NL
+1752300140,1752300143,ES
+1752300144,1752300147,NL
+1752300148,1752300151,ES
+1752300152,1752300155,NL
+1752300156,1752300158,ES
+1752300159,1752300163,NL
+1752300164,1752300167,ES
+1752300168,1752300171,NL
+1752300172,1752300175,ES
+1752300176,1752300179,NL
+1752300180,1752300183,ES
+1752300184,1752300187,NL
+1752300188,1752300191,ES
+1752300192,1752300195,NL
+1752300196,1752300199,ES
+1752300200,1752300203,NL
+1752300204,1752300207,ES
+1752300208,1752300211,NL
+1752300212,1752300214,ES
+1752300215,1752300287,NL
1752300288,1752300543,AE
1752300544,1752330239,US
1752330240,1752338431,NL
1752338432,1752344831,US
1752344832,1752345087,NL
-1752345088,1752495103,US
+1752345088,1752387587,US
+1752387588,1752387588,IL
+1752387589,1752387596,US
+1752387597,1752387599,IL
+1752387600,1752387603,US
+1752387604,1752387607,IL
+1752387608,1752387611,US
+1752387612,1752387615,IL
+1752387616,1752387619,US
+1752387620,1752387622,IL
+1752387623,1752387627,US
+1752387628,1752387631,IL
+1752387632,1752387635,US
+1752387636,1752387639,IL
+1752387640,1752387643,US
+1752387644,1752387647,IL
+1752387648,1752387651,US
+1752387652,1752387655,IL
+1752387656,1752387659,US
+1752387660,1752387660,IL
+1752387661,1752387843,US
+1752387844,1752387847,AU
+1752387848,1752387851,US
+1752387852,1752387855,AU
+1752387856,1752387859,US
+1752387860,1752387863,AU
+1752387864,1752387867,US
+1752387868,1752387871,AU
+1752387872,1752387875,US
+1752387876,1752387879,AU
+1752387880,1752387883,US
+1752387884,1752387887,AU
+1752387888,1752387891,US
+1752387892,1752387892,AU
+1752387893,1752474371,US
+1752474372,1752474375,AU
+1752474376,1752474379,US
+1752474380,1752474383,AU
+1752474384,1752474387,US
+1752474388,1752474391,AU
+1752474392,1752474395,US
+1752474396,1752474399,AU
+1752474400,1752474403,US
+1752474404,1752474407,AU
+1752474408,1752474411,US
+1752474412,1752474415,AU
+1752474416,1752474419,US
+1752474420,1752474423,AU
+1752474424,1752474427,US
+1752474428,1752474429,AU
+1752474430,1752474430,US
+1752474431,1752474431,AU
+1752474432,1752474435,US
+1752474436,1752474436,AU
+1752474437,1752494869,US
+1752494870,1752494871,TW
+1752494872,1752494875,US
+1752494876,1752494879,TW
+1752494880,1752494883,US
+1752494884,1752494887,TW
+1752494888,1752494891,US
+1752494892,1752494895,TW
+1752494896,1752495103,US
1752495104,1752495359,NL
-1752495360,1752568575,US
+1752495360,1752495390,US
+1752495391,1752495391,AE
+1752495392,1752495395,US
+1752495396,1752495399,AE
+1752495400,1752495403,US
+1752495404,1752495407,AE
+1752495408,1752495411,US
+1752495412,1752495412,AE
+1752495413,1752495413,US
+1752495414,1752495415,AE
+1752495416,1752495419,US
+1752495420,1752495423,AE
+1752495424,1752495427,US
+1752495428,1752495431,AE
+1752495432,1752544579,US
+1752544580,1752544583,AU
+1752544584,1752544587,US
+1752544588,1752544591,AU
+1752544592,1752544595,US
+1752544596,1752544599,AU
+1752544600,1752544603,US
+1752544604,1752544607,AU
+1752544608,1752544611,US
+1752544612,1752544615,AU
+1752544616,1752544619,US
+1752544620,1752544623,AU
+1752544624,1752544627,US
+1752544628,1752544631,AU
+1752544632,1752565251,US
+1752565252,1752565255,JP
+1752565256,1752565259,US
+1752565260,1752565263,JP
+1752565264,1752565269,US
+1752565270,1752565271,JP
+1752565272,1752565277,US
+1752565278,1752565281,JP
+1752565282,1752565286,US
+1752565287,1752565289,JP
+1752565290,1752565293,US
+1752565294,1752565297,JP
+1752565298,1752565301,US
+1752565302,1752565305,JP
+1752565306,1752565309,US
+1752565310,1752565313,JP
+1752565314,1752565317,US
+1752565318,1752565321,JP
+1752565322,1752565325,US
+1752565326,1752565329,JP
+1752565330,1752565333,US
+1752565334,1752565337,JP
+1752565338,1752565405,US
+1752565406,1752565409,JP
+1752565410,1752565461,US
+1752565462,1752565465,JP
+1752565466,1752565469,US
+1752565470,1752565473,JP
+1752565474,1752565477,US
+1752565478,1752565481,JP
+1752565482,1752565485,US
+1752565486,1752565488,JP
+1752565489,1752568575,US
1752568576,1752568831,NL
1752568832,1752570367,US
1752570368,1752570623,NL
@@ -64107,14 +72305,38 @@
1752674304,1752675327,AE
1752675328,1752730111,US
1752730112,1752730367,NL
-1752730368,1752750079,US
+1752730368,1752730547,US
+1752730548,1752730551,SG
+1752730552,1752730555,US
+1752730556,1752730559,SG
+1752730560,1752730563,US
+1752730564,1752730567,SG
+1752730568,1752730571,US
+1752730572,1752730575,SG
+1752730576,1752730579,US
+1752730580,1752730583,SG
+1752730584,1752730587,US
+1752730588,1752730590,SG
+1752730591,1752730604,US
+1752730605,1752730608,SG
+1752730609,1752750079,US
1752750080,1752751615,NL
1752751616,1752756223,US
1752756224,1752768511,NL
1752768512,1752776703,US
1752776704,1752778239,NL
1752778240,1752779775,US
-1752779776,1752780799,NL
+1752779776,1752780035,NL
+1752780036,1752780039,DE
+1752780040,1752780043,NL
+1752780044,1752780047,DE
+1752780048,1752780051,NL
+1752780052,1752780055,DE
+1752780056,1752780059,NL
+1752780060,1752780063,DE
+1752780064,1752780067,NL
+1752780068,1752780069,DE
+1752780070,1752780799,NL
1752780800,1752788991,US
1752788992,1752798463,NL
1752798464,1752799231,US
@@ -64141,7 +72363,31 @@
1752944640,1752945151,NL
1752945152,1752945663,US
1752945664,1752946175,NL
-1752946176,1752971007,US
+1752946176,1752970772,US
+1752970773,1752970775,IN
+1752970776,1752970779,US
+1752970780,1752970783,IN
+1752970784,1752970787,US
+1752970788,1752970791,IN
+1752970792,1752970795,US
+1752970796,1752970799,IN
+1752970800,1752970803,US
+1752970804,1752970807,IN
+1752970808,1752970811,US
+1752970812,1752970815,IN
+1752970816,1752970819,US
+1752970820,1752970823,IN
+1752970824,1752970827,US
+1752970828,1752970828,IN
+1752970829,1752970829,US
+1752970830,1752970831,IN
+1752970832,1752970835,US
+1752970836,1752970836,IN
+1752970837,1752970837,US
+1752970838,1752970839,IN
+1752970840,1752970843,US
+1752970844,1752970844,IN
+1752970845,1752971007,US
1752971008,1752971263,NL
1752971264,1752984063,US
1752984064,1753005055,NL
@@ -64216,23 +72462,22 @@
1753487616,1753487871,GB
1753487872,1753488127,NG
1753488128,1753488383,SE
-1753488384,1753488639,GB
-1753488640,1753489151,US
+1753488384,1753489151,US
1753489152,1753489407,PL
-1753489408,1753489663,AE
+1753489408,1753489663,GB
1753489664,1753489919,HK
1753489920,1753490175,US
1753490176,1753490431,AU
1753490432,1753490687,IL
1753490688,1753490943,US
1753490944,1753491199,KE
-1753491200,1753491455,KR
+1753491200,1753491455,US
1753491456,1753491711,NL
1753491712,1753491967,US
1753491968,1753492223,TW
1753492224,1753492479,UA
-1753492480,1753492991,GB
-1753492992,1753493503,US
+1753492480,1753493247,GB
+1753493248,1753493503,US
1753493504,1753493759,MY
1753493760,1753494015,US
1753494016,1753494271,NL
@@ -64240,8 +72485,7 @@
1753494528,1753494783,IL
1753494784,1753495039,US
1753495040,1753495295,RU
-1753495296,1753495551,GB
-1753495552,1753495807,US
+1753495296,1753495807,US
1753495808,1753496063,AR
1753496064,1753496319,IN
1753496320,1753496831,US
@@ -64283,7 +72527,7 @@
1753512704,1753512959,SG
1753512960,1753513983,US
1753513984,1753514239,MY
-1753514240,1753514495,JP
+1753514240,1753514495,US
1753514496,1753514751,CA
1753514752,1753515007,US
1753515008,1753515263,BE
@@ -64324,12 +72568,12 @@
1753527552,1753527807,IN
1753527808,1753528319,US
1753528320,1753528575,AR
-1753528576,1753528831,CA
-1753528832,1753529087,AR
+1753528576,1753529087,CA
1753529088,1753529343,NZ
1753529344,1753529599,HU
1753529600,1753529855,PL
-1753529856,1753530623,US
+1753529856,1753530111,CA
+1753530112,1753530623,US
1753530624,1753531135,TW
1753531136,1753531391,US
1753531392,1753531647,IN
@@ -64399,7 +72643,9 @@
1754031872,1754032127,NL
1754032128,1754038079,US
1754038080,1754038143,PL
-1754038144,1754136575,US
+1754038144,1754053887,US
+1754053888,1754054143,DE
+1754054144,1754136575,US
1754136576,1754169343,CA
1754169344,1754206335,US
1754206336,1754206463,WS
@@ -64424,7 +72670,9 @@
1754210048,1754210303,BJ
1754210304,1754211839,US
1754211840,1754212095,JP
-1754212096,1754223615,US
+1754212096,1754213119,US
+1754213120,1754213375,JP
+1754213376,1754223615,US
1754223616,1754223623,MX
1754223624,1754223631,AU
1754223632,1754226431,US
@@ -64697,9 +72945,7 @@
1754305664,1754305759,US
1754305760,1754305767,CA
1754305768,1754305791,US
-1754305792,1754305855,CA
-1754305856,1754305919,CN
-1754305920,1754306559,CA
+1754305792,1754306559,CA
1754306560,1754306959,US
1754306960,1754306975,CA
1754306976,1754307031,US
@@ -66007,9 +74253,7 @@
1759740288,1759740351,US
1759740352,1759740927,CA
1759740928,1759741439,US
-1759741440,1759741695,CA
-1759741696,1759741951,IL
-1759741952,1759742929,CA
+1759741440,1759742929,CA
1759742930,1759742930,US
1759742931,1759742939,CA
1759742940,1759742942,US
@@ -66121,9 +74365,7 @@
1759770624,1760034815,US
1760038912,1760044031,US
1760044032,1760044159,SE
-1760044160,1760044319,US
-1760044320,1760044415,SE
-1760044416,1760047103,US
+1760044160,1760047103,US
1760047104,1760051199,CA
1760051200,1760086015,US
1760086016,1760088063,CA
@@ -66181,7 +74423,9 @@
1760690176,1760755711,CA
1760755712,1760776191,US
1760776192,1760784383,CA
-1760784384,1760811007,US
+1760784384,1760809471,US
+1760809472,1760809727,DE
+1760809728,1760811007,US
1760811008,1760812031,NL
1760812032,1760812543,US
1760812544,1760813055,CA
@@ -66433,7 +74677,8 @@
1761560576,1761581055,US
1761581056,1761583103,CA
1761583104,1761587199,US
-1761587200,1761588223,MS
+1761587200,1761587455,MS
+1761587456,1761588223,AI
1761588224,1761589247,PR
1761589248,1761595391,US
1761595392,1761596415,CA
@@ -66566,10 +74811,9 @@
1776943104,1777008639,MW
1777008640,1777041407,CI
1777041408,1777045503,DZ
-1777045504,1777045759,GB
-1777045760,1777048063,MU
-1777048064,1777048319,GB
-1777048320,1777049599,MU
+1777045504,1777047039,MU
+1777047040,1777047551,GB
+1777047552,1777049599,MU
1777049600,1777053695,ZA
1777053696,1777057791,BF
1777057792,1777061887,NG
@@ -66816,9 +75060,7 @@
1805168864,1805168895,CA
1805168896,1805169199,US
1805169200,1805169215,CA
-1805169216,1805169663,US
-1805169664,1805169919,CA
-1805169920,1805169935,US
+1805169216,1805169935,US
1805169936,1805170047,CA
1805170048,1805170111,US
1805170112,1805170403,CA
@@ -67159,9 +75401,7 @@
1806132171,1806132171,PH
1806132172,1806135130,US
1806135131,1806135132,IN
-1806135133,1806135295,US
-1806135296,1806135551,GB
-1806135552,1806168831,US
+1806135133,1806168831,US
1806168832,1806169087,CA
1806169088,1806170111,US
1806170112,1806172159,CA
@@ -67198,9 +75438,7 @@
1806401536,1806434303,CA
1806434304,1806514463,US
1806514464,1806514495,GB
-1806514496,1806515007,US
-1806515008,1806515023,PA
-1806515024,1806515231,US
+1806514496,1806515231,US
1806515232,1806515263,GB
1806515264,1806532927,US
1806532928,1806532959,GB
@@ -67363,9 +75601,7 @@
1822621184,1822621439,US
1822621440,1822621695,AU
1822621696,1822654463,US
-1822654464,1822660071,CA
-1822660072,1822660079,US
-1822660080,1822662143,CA
+1822654464,1822662143,CA
1822662144,1822662399,US
1822662400,1822663127,CA
1822663128,1822663135,IN
@@ -67383,9 +75619,12 @@
1823113216,1823129599,CA
1823129600,1823162367,US
1823162368,1823170559,CA
-1823170560,1823179180,US
+1823170560,1823178751,US
+1823178752,1823179007,GB
+1823179008,1823179180,US
1823179181,1823179181,DE
-1823179182,1823181055,US
+1823179182,1823180799,US
+1823180800,1823181055,BR
1823181056,1823181311,DK
1823181312,1823181567,BR
1823181568,1823181823,FR
@@ -67430,21 +75669,25 @@
1830813696,1831337983,NL
1831337984,1831338284,DE
1831338285,1831338285,CH
-1831338286,1831862271,DE
+1831338286,1831453534,DE
+1831453535,1831453535,KR
+1831453536,1831862271,DE
1831862272,1832124415,PT
1832124416,1832386559,IT
-1832386560,1832393215,DK
-1832393216,1832393471,SE
-1832393472,1832399871,DK
+1832386560,1832399871,DK
1832399872,1832400127,SE
1832400128,1832414463,DK
1832414464,1832414719,SE
-1832414720,1832453375,DK
-1832453376,1832453631,SE
-1832453632,1832554495,DK
+1832414720,1832457215,DK
+1832457216,1832457471,SE
+1832457472,1832485631,DK
+1832485632,1832485887,SE
+1832485888,1832554495,DK
1832554496,1832556543,SE
-1832556544,1832630783,DK
-1832630784,1832631295,SE
+1832556544,1832630271,DK
+1832630272,1832630783,SE
+1832630784,1832631039,DK
+1832631040,1832631295,SE
1832631296,1832648703,DK
1832648704,1832681471,HR
1832681472,1832714239,RU
@@ -67457,8 +75700,8 @@
1832781312,1832781823,FR
1832781824,1832783871,MQ
1832783872,1832785919,GP
-1832785920,1832786943,FR
-1832786944,1832787967,GF
+1832785920,1832787199,FR
+1832787200,1832787967,GF
1832787968,1832794111,FR
1832794112,1832795135,GP
1832795136,1832795647,GF
@@ -67471,8 +75714,7 @@
1832798208,1832799231,GP
1832799232,1832799999,FR
1832800000,1832800255,GP
-1832800256,1832800511,FR
-1832800512,1832801791,MQ
+1832800256,1832801791,MQ
1832801792,1832802047,FR
1832802048,1832806399,MQ
1832806400,1832808447,GP
@@ -67516,7 +75758,8 @@
1833246720,1833248767,FI
1833248768,1833250815,MK
1833250816,1833252863,ES
-1833252864,1833254911,GB
+1833252864,1833253887,CZ
+1833253888,1833254911,GB
1833254912,1833256959,DE
1833256960,1833259007,RU
1833259008,1833261055,GB
@@ -67546,8 +75789,10 @@
1833314304,1833316351,IM
1833316352,1833318399,DK
1833318400,1833320447,GB
+1833320448,1833320959,DE
1833320960,1833321215,IQ
1833321283,1833321283,AE
+1833321472,1833322495,GB
1833322496,1833324543,IT
1833324544,1833326591,NO
1833326592,1833327103,GB
@@ -67655,7 +75900,8 @@
1833545728,1833549823,IT
1833549824,1833553919,RU
1833553920,1833558015,CZ
-1833558016,1833560867,BG
+1833558016,1833559039,US
+1833559040,1833560867,BG
1833560868,1833560868,US
1833560869,1833561838,BG
1833561839,1833561839,US
@@ -67702,12 +75948,8 @@
1834483712,1834614783,BE
1834614784,1834745855,DE
1834745856,1834759679,RS
-1834759680,1834760191,XK
-1834760192,1834775039,RS
-1834775040,1834775551,XK
-1834775552,1834786815,RS
-1834786816,1834787327,XK
-1834787328,1834876927,RS
+1834759680,1834759935,XK
+1834759936,1834876927,RS
1834876928,1834885119,RU
1834885120,1834893311,FR
1834893312,1834901503,RU
@@ -67728,7 +75970,9 @@
1834930432,1834930687,EE
1834930688,1834931199,RU
1834931200,1834932223,TR
-1834932224,1834934015,RU
+1834932224,1834933247,RU
+1834933248,1834933503,US
+1834933504,1834934015,RU
1834934016,1834934271,CN
1834934272,1834938367,RS
1834938368,1834944511,PL
@@ -67778,7 +76022,8 @@
1835664384,1835665407,PL
1835665408,1835668479,UA
1835668480,1835669503,RU
-1835669504,1835671551,UA
+1835669504,1835670527,FR
+1835670528,1835671551,UA
1835671552,1835679743,CH
1835679744,1835687935,FR
1835687936,1835696127,IE
@@ -68020,21 +76265,18 @@
1836679168,1836680703,BG
1836680704,1836681215,MK
1836681216,1836687359,BG
-1836687360,1836689407,MK
-1836689408,1836711935,BG
+1836687360,1836689151,MK
+1836689152,1836711935,BG
1836711936,1836728319,UA
1836728320,1836744703,RS
-1836744704,1836752895,RE
+1836744704,1836746751,FR
+1836746752,1836752895,RE
1836752896,1836753111,FR
1836753112,1836753112,RE
1836753113,1836753151,FR
-1836753152,1836754431,RE
-1836754432,1836754687,FR
-1836754688,1836756991,RE
+1836753152,1836756991,RE
1836756992,1836758015,FR
-1836758016,1836759807,RE
-1836759808,1836760063,FR
-1836760064,1836761087,RE
+1836758016,1836761087,RE
1836761088,1836777471,IR
1836777472,1836793855,SI
1836793856,1836794567,GB
@@ -68205,9 +76447,7 @@
1840906240,1840971775,IL
1840971776,1841102847,RU
1841102848,1841168383,NO
-1841168384,1841233418,FR
-1841233419,1841233419,GB
-1841233420,1841233919,FR
+1841168384,1841233919,FR
1841233920,1841299455,RU
1841299456,1841430527,DE
1841430528,1841561599,RU
@@ -68292,9 +76532,10 @@
1841938432,1841946623,RU
1841946624,1841946658,BG
1841946659,1841946659,UA
-1841946660,1841948671,BG
-1841948672,1841948927,UA
-1841948928,1841954815,BG
+1841946660,1841947647,BG
+1841947648,1841948927,UA
+1841948928,1841949695,BG
+1841949696,1841954815,UA
1841954816,1841971199,RU
1841971200,1841979391,CZ
1841979392,1841982975,NL
@@ -68315,7 +76556,9 @@
1842044928,1842053119,GB
1842053120,1842069503,IR
1842069504,1842077695,RU
-1842077696,1842078975,MQ
+1842077696,1842077951,MQ
+1842077952,1842078207,FR
+1842078208,1842078975,MQ
1842078976,1842079231,GP
1842079232,1842079743,MQ
1842079744,1842080255,GP
@@ -68560,7 +76803,8 @@
1844115456,1844117503,DE
1844117504,1844119551,CZ
1844119552,1844121599,UA
-1844121600,1844123647,ES
+1844121600,1844121855,DE
+1844121856,1844123647,ES
1844123648,1844125695,RU
1844125696,1844127743,NL
1844127744,1844129791,DE
@@ -68570,13 +76814,13 @@
1844135936,1844137983,NL
1844137984,1844140031,FR
1844140032,1844142079,RU
+1844142080,1844143103,NL
+1844143104,1844144127,NO
1844144128,1844144383,IT
1844144384,1844144639,SM
1844144640,1844144895,IT
1844144896,1844145407,SM
-1844145408,1844145663,IT
-1844145664,1844145919,SM
-1844145920,1844146175,IT
+1844145408,1844146175,IT
1844146176,1844148223,NO
1844148224,1844150271,GB
1844150272,1844152319,ES
@@ -68590,7 +76834,7 @@
1844162560,1844164607,CZ
1844164608,1844166655,RU
1844166656,1844168703,AZ
-1844168704,1844168959,GB
+1844168704,1844168959,DE
1844168960,1844169471,SE
1844169472,1844169487,AF
1844169488,1844169519,US
@@ -68690,7 +76934,9 @@
1844971776,1844972031,GB
1844972032,1844980479,RU
1844980480,1844980735,CZ
-1844980736,1845006335,RU
+1844980736,1845003007,RU
+1845003008,1845003263,KZ
+1845003264,1845006335,RU
1845006336,1845007103,SE
1845007104,1845007359,LV
1845007360,1845007615,KZ
@@ -68747,9 +76993,7 @@
1847734272,1847735295,NZ
1847735296,1847736319,AU
1847736320,1847754751,KR
-1847754752,1847757823,TH
-1847757824,1847758847,CN
-1847758848,1847770111,TH
+1847754752,1847770111,TH
1847770112,1847771135,SG
1847771136,1847783423,TH
1847783424,1847787519,US
@@ -68773,9 +77017,7 @@
1848406016,1848410111,NP
1848410112,1848412415,JP
1848412416,1848412671,PH
-1848412672,1848413439,JP
-1848413440,1848413951,PH
-1848413952,1848414207,JP
+1848412672,1848414207,JP
1848414208,1848418303,CN
1848418304,1848420351,AU
1848420352,1848422399,ID
@@ -68856,9 +77098,7 @@
1855979520,1856241663,JP
1856241664,1856307199,TH
1856307200,1856315391,KR
-1856315392,1856319487,CN
-1856319488,1856323327,HK
-1856323328,1856323583,CN
+1856315392,1856323583,CN
1856323584,1856339967,KR
1856339968,1856372735,JP
1856372736,1856503807,CN
@@ -68875,7 +77115,8 @@
1856847872,1856864255,CN
1856864256,1856872447,AU
1856872448,1856876543,NZ
-1856876544,1856880639,IN
+1856876544,1856880383,IN
+1856880384,1856880639,SG
1856880640,1856888831,CN
1856888832,1856892927,AU
1856892928,1856897023,JP
@@ -68909,8 +77150,7 @@
1860831232,1860832255,DE
1860832256,1860833279,JP
1860833280,1860834303,US
-1860834304,1860835327,SG
-1860835328,1860836351,US
+1860834304,1860836351,SG
1860836352,1860837375,DE
1860837376,1860839423,JP
1860839424,1860841471,SG
@@ -68952,9 +77192,7 @@
1866752000,1866756095,PK
1866756096,1866760191,ID
1866760192,1866792959,JP
-1866792960,1866803199,NZ
-1866803200,1866803711,AU
-1866803712,1866858495,NZ
+1866792960,1866858495,NZ
1866858496,1866989567,TW
1866989568,1867513855,CN
1867513856,1867775999,TW
@@ -69120,8 +77358,7 @@
1884291072,1885863935,CN
1885863936,1885995007,TW
1885995008,1886191615,KR
-1886191616,1886195455,JP
-1886195456,1886195711,PH
+1886191616,1886195711,JP
1886195712,1886197759,ID
1886197760,1886199807,JP
1886199808,1886207999,KR
@@ -69176,8 +77413,8 @@
1892122624,1892155391,SG
1892155392,1892941823,PH
1892941824,1893015551,KR
-1893015552,1893017855,AU
-1893017856,1893018111,NZ
+1893015552,1893017599,AU
+1893017600,1893018111,NZ
1893018112,1893019647,AU
1893019648,1893023743,TW
1893023744,1893027839,HK
@@ -69254,11 +77491,12 @@
1897742336,1897742847,SG
1897742848,1897743359,SI
1897743360,1897743871,SG
-1897743872,1897744511,SI
-1897744512,1897744639,SG
-1897744640,1897745407,SI
-1897745408,1897746431,SG
-1897746432,1897748511,US
+1897743872,1897744575,SI
+1897744576,1897744607,SG
+1897744608,1897746176,SI
+1897746177,1897746287,US
+1897746288,1897746295,SG
+1897746296,1897748511,US
1897748512,1897748514,HK
1897748515,1897758719,US
1897758720,1897779199,KR
@@ -69274,7 +77512,9 @@
1897791488,1897824255,KR
1897824256,1897857023,IN
1897857024,1897922559,CN
-1897922560,1898708991,JP
+1897922560,1898223615,JP
+1898223616,1898224639,ID
+1898224640,1898708991,JP
1898708992,1899233279,CN
1899233280,1899237375,AU
1899237376,1899241471,JP
@@ -69397,7 +77637,11 @@
1914660864,1914662911,JP
1914662912,1914667007,KR
1914667008,1914683391,IN
-1914683392,1914687487,AU
+1914683392,1914685183,AU
+1914685184,1914685439,US
+1914685440,1914685951,AU
+1914685952,1914686463,NZ
+1914686464,1914687487,AU
1914687488,1914688511,US
1914688512,1914689535,NZ
1914689536,1914691583,JP
@@ -69439,8 +77683,7 @@
1919942656,1919999999,CN
1920000000,1920002047,HK
1920002048,1920003071,CN
-1920003072,1920004095,AU
-1920004096,1920008191,HK
+1920003072,1920008191,HK
1920008192,1920069631,CN
1920069632,1920071167,HK
1920071168,1920072703,CN
@@ -69511,13 +77754,14 @@
1925611520,1925619711,PH
1925619712,1925627903,TW
1925627904,1925638143,JP
-1925638144,1925640191,PK
+1925638144,1925639935,PK
+1925639936,1925640191,EG
1925640192,1925642239,ID
1925642240,1925644287,CN
1925644288,1925660671,KR
1925660672,1925662463,HK
-1925662464,1925663743,TW
-1925663744,1925664767,HK
+1925662464,1925662719,TW
+1925662720,1925664767,CN
1925664768,1925677055,ID
1925677056,1926234111,KR
1926234112,1929379839,CN
@@ -69547,8 +77791,8 @@
1932156928,1932161023,JP
1932161024,1932163071,TW
1932163072,1932165119,PH
-1932165120,1932169727,SG
-1932169728,1932170239,AU
+1932165120,1932169983,SG
+1932169984,1932170239,AU
1932170240,1932197887,SG
1932197888,1932263423,TW
1932263424,1933574143,CN
@@ -69611,7 +77855,8 @@
1937536000,1937536511,GB
1937536512,1937537023,US
1937537024,1937539071,IN
-1937539072,1937637375,JP
+1937539072,1937635327,JP
+1937635328,1937637375,AU
1937637376,1937670143,HK
1937670144,1937672191,NZ
1937672192,1937678335,JP
@@ -69721,9 +77966,7 @@
1946955776,1946957823,SG
1946957824,1946959871,NZ
1946959872,1946976255,LK
-1946976256,1946989567,SG
-1946989568,1946990079,GB
-1946990080,1946999807,SG
+1946976256,1946999807,SG
1946999808,1947000319,MY
1947000320,1947009023,SG
1947009024,1947074559,CN
@@ -69845,11 +78088,7 @@
1952220672,1952233471,JP
1952233472,1952249855,HK
1952249856,1952251903,JP
-1952251904,1952281599,PH
-1952281600,1952282421,CN
-1952282422,1952282422,PH
-1952282423,1952282623,CN
-1952282624,1952284671,PH
+1952251904,1952284671,PH
1952284672,1952288767,NZ
1952288768,1952292863,JP
1952292864,1952317439,KR
@@ -69908,7 +78147,9 @@
1959241728,1959243775,IN
1959243776,1959247871,JP
1959247872,1959249919,ID
-1959251968,1959256063,NZ
+1959251968,1959255039,NZ
+1959255040,1959255551,AE
+1959255552,1959256063,NZ
1959256064,1959260159,AU
1959260160,1959264255,JP
1959264256,1959395327,KR
@@ -69937,6 +78178,13 @@
1959580672,1959581695,LK
1959581696,1959582719,CN
1959582720,1959583743,BD
+1959583744,1959584767,IN
+1959584768,1959585791,BD
+1959585792,1959587839,CN
+1959587840,1959588863,AF
+1959588864,1959589887,CN
+1959589888,1959590911,ID
+1959590912,1959591935,BD
1959591936,1959657471,CN
1959657472,1959657727,US
1959657728,1959658495,HK
@@ -70103,7 +78351,9 @@
1964244992,1964249087,AU
1964249088,1964253183,PK
1964253184,1964255231,WF
-1964255232,1964257279,SG
+1964255232,1964255487,SG
+1964255488,1964255743,ID
+1964255744,1964257279,SG
1964257280,1964261375,ID
1964261376,1964263423,AU
1964263424,1964265471,JP
@@ -70135,9 +78385,9 @@
1966473216,1966538751,ID
1966538752,1966571519,JP
1966571520,1966587903,KR
-1966587904,1966591242,AF
-1966591243,1966591243,DE
-1966591244,1966591244,IT
+1966587904,1966591241,AF
+1966591242,1966591243,DE
+1966591244,1966591244,AF
1966591245,1966591246,DE
1966591247,1966591999,AF
1966592000,1966596095,JP
@@ -70191,8 +78441,7 @@
1969790976,1969793023,AU
1969793024,1969795071,CN
1969795072,1969797119,NZ
-1969797120,1969797631,SG
-1969797632,1969798143,BD
+1969797120,1969798143,BD
1969798144,1969798399,JP
1969798400,1969799167,HK
1969799168,1969807359,ID
@@ -70366,7 +78615,17 @@
1992949760,1993342975,CN
1993342976,1993605119,AU
1993605120,1993736191,CN
-1993736192,1993850879,SG
+1993736192,1993777469,SG
+1993777470,1993777471,JP
+1993777472,1993777475,SG
+1993777476,1993777479,JP
+1993777480,1993777483,SG
+1993777484,1993777487,JP
+1993777488,1993777491,SG
+1993777492,1993777493,JP
+1993777494,1993777603,SG
+1993777604,1993777619,JP
+1993777620,1993850879,SG
1993850880,1993867263,CN
1993867264,1994391551,KR
1994391552,1994850303,CN
@@ -70389,9 +78648,7 @@
1997111296,1997115391,AU
1997115392,1997115959,HK
1997115960,1997115967,AU
-1997115968,1997116119,HK
-1997116120,1997116123,AU
-1997116124,1997116279,HK
+1997115968,1997116279,HK
1997116280,1997116295,AU
1997116296,1997116311,HK
1997116312,1997116319,AU
@@ -70485,9 +78742,7 @@
1998562560,1998562815,CN
1998562816,1998562863,IN
1998562864,1998562864,HK
-1998562865,1998563583,IN
-1998563584,1998563839,AU
-1998563840,1998565375,IN
+1998562865,1998565375,IN
1998565376,1998569471,TW
1998569472,1998577663,CN
1998577664,1998579711,AU
@@ -70556,7 +78811,9 @@
2001272832,2001305599,PK
2001305600,2001307903,SG
2001307904,2001308159,MY
-2001308160,2001420287,SG
+2001308160,2001320447,SG
+2001320448,2001320959,MY
+2001320960,2001420287,SG
2001420288,2001453055,KR
2001453056,2001457151,SG
2001457152,2001461247,CN
@@ -70576,7 +78833,10 @@
2001846272,2001854463,SG
2001854464,2001862655,HK
2001862656,2001864703,AU
-2001864704,2001870847,JP
+2001864704,2001868799,JP
+2001868800,2001869311,CN
+2001869312,2001869823,JP
+2001869824,2001870847,CN
2001870848,2001879039,KR
2001879040,2001895423,IN
2001895424,2001899519,VN
@@ -70624,7 +78884,8 @@
2007027712,2007031807,TH
2007031808,2007033855,NZ
2007033856,2007034879,MY
-2007034880,2007035903,PK
+2007034880,2007035135,PK
+2007035136,2007035903,AE
2007035904,2007039999,TW
2007040000,2007048191,KR
2007048192,2007064575,AU
@@ -70823,7 +79084,12 @@
2033321984,2033324031,CN
2033324032,2033328127,KR
2033328128,2033330175,ID
-2033330176,2033336319,JP
+2033330176,2033331263,CN
+2033331264,2033331264,JP
+2033331265,2033331287,CN
+2033331288,2033331288,JP
+2033331289,2033332223,CN
+2033332224,2033336319,JP
2033336320,2033352703,KR
2033352704,2033356799,ID
2033356800,2033358847,TW
@@ -70953,10 +79219,10 @@
2047379456,2047383551,PK
2047383552,2047387647,CN
2047387648,2047391743,PK
-2047391744,2047397887,CN
-2047397888,2047399935,PK
-2047399936,2047406079,CN
-2047406080,2047410175,PK
+2047391744,2047395839,CN
+2047395840,2047399935,PK
+2047399936,2047408127,CN
+2047408128,2047410175,PK
2047410176,2047492095,HK
2047492096,2047496191,KR
2047496192,2047508479,HK
@@ -71064,16 +79330,15 @@
2056816864,2056816895,MY
2056816896,2056817335,JP
2056817336,2056817343,HK
-2056817344,2056817663,JP
-2056817664,2056817727,MY
+2056817344,2056817727,JP
2056817728,2056817791,AU
-2056817792,2056818687,MY
+2056817792,2056818687,JP
2056818688,2056818993,AU
2056818994,2056818994,JP
2056818995,2056819087,AU
2056819088,2056819103,SG
-2056819104,2056820735,AU
-2056820736,2056823849,JP
+2056819104,2056819711,AU
+2056819712,2056823849,JP
2056823850,2056823850,SG
2056823851,2056824831,JP
2056824832,2056824847,AU
@@ -71129,10 +79394,8 @@
2063073280,2063077375,BD
2063077376,2063077377,AU
2063077378,2063077378,HK
-2063077379,2063077631,AU
-2063077632,2063077887,HK
-2063077888,2063078143,SG
-2063078144,2063079423,HK
+2063077379,2063077887,AU
+2063077888,2063079423,HK
2063079424,2063081471,CN
2063081472,2063085567,ID
2063085568,2063089663,CN
@@ -71149,16 +79412,15 @@
2063116872,2063116879,KR
2063116880,2063118091,JP
2063118092,2063118095,PH
-2063118096,2063118159,JP
-2063118160,2063118191,PH
+2063118096,2063118175,JP
+2063118176,2063118191,PH
2063118192,2063118287,JP
2063118288,2063118303,PH
2063118304,2063118335,JP
2063118336,2063118591,IN
2063118592,2063120863,JP
2063120864,2063120895,TW
-2063120896,2063121407,AU
-2063121408,2063122331,JP
+2063120896,2063122331,JP
2063122332,2063122335,IN
2063122336,2063122431,JP
2063122432,2063138815,SG
@@ -71167,8 +79429,7 @@
2063341568,2063343615,SG
2063343616,2063351807,US
2063351808,2063368191,KR
-2063368192,2063370239,US
-2063370240,2063372287,JP
+2063368192,2063372287,US
2063372288,2063374335,AU
2063374336,2063376383,NZ
2063376384,2063380479,TW
@@ -71319,7 +79580,9 @@
2077753344,2078539775,JP
2078539776,2078670847,KR
2078670848,2078736383,JP
-2078736384,2078769151,LK
+2078736384,2078753023,LK
+2078753024,2078753279,GB
+2078753280,2078769151,LK
2078769152,2078801919,ID
2078801920,2079064063,CN
2079064064,2079326207,IN
@@ -71434,9 +79697,7 @@
2087453696,2087454719,KH
2087454720,2087456767,CN
2087456768,2087457791,IN
-2087457792,2087458303,HK
-2087458304,2087458559,JP
-2087458560,2087458815,SG
+2087457792,2087458815,HK
2087458816,2087460863,FJ
2087460864,2087462911,JP
2087462912,2087464959,CN
@@ -71497,8 +79758,8 @@
2090582016,2090590207,SG
2090590208,2090594303,NZ
2090594304,2090622975,IN
-2090622976,2090639359,SG
-2090639360,2090647551,HK
+2090622976,2090631167,SG
+2090631168,2090647551,HK
2090647552,2090651647,SG
2090651648,2090659839,JP
2090659840,2090663935,TH
@@ -71589,7 +79850,39 @@
2099216384,2099232767,KR
2099232768,2100297727,CN
2100297728,2100854783,JP
-2100854784,2100887551,US
+2100854784,2100877857,US
+2100877858,2100877867,JP
+2100877868,2100877868,US
+2100877869,2100877870,JP
+2100877871,2100877872,US
+2100877873,2100877881,JP
+2100877882,2100877897,US
+2100877898,2100877901,JP
+2100877902,2100877902,US
+2100877903,2100877903,JP
+2100877904,2100877936,US
+2100877937,2100877937,JP
+2100877938,2100877995,US
+2100877996,2100877999,JP
+2100878000,2100878003,US
+2100878004,2100878007,JP
+2100878008,2100878011,US
+2100878012,2100878013,JP
+2100878014,2100878141,US
+2100878142,2100878143,SG
+2100878144,2100878145,US
+2100878146,2100878148,SG
+2100878149,2100878168,US
+2100878169,2100878172,SG
+2100878173,2100878176,US
+2100878177,2100878180,SG
+2100878181,2100878184,US
+2100878185,2100878188,SG
+2100878189,2100879003,US
+2100879004,2100879010,IN
+2100879011,2100879046,US
+2100879047,2100879053,IN
+2100879054,2100887551,US
2100887552,2100953087,KR
2100953088,2100969471,VN
2100969472,2100985855,JP
@@ -71629,9 +79922,7 @@
2108358656,2108424191,CN
2108424192,2108686335,JP
2108686336,2109734911,KR
-2109734912,2109935103,JP
-2109935104,2109935359,CN
-2109935360,2110783487,JP
+2109734912,2110783487,JP
2110783488,2110799871,CN
2110799872,2110816255,KR
2110816256,2110832639,ID
@@ -71667,17 +79958,23 @@
2113560320,2113683455,KR
2113683456,2113684607,JP
2113684608,2113684671,TW
-2113684672,2113685663,JP
-2113685664,2113685695,SG
-2113685696,2113687999,JP
+2113684672,2113685503,JP
+2113685504,2113685759,SG
+2113685760,2113687999,JP
2113688000,2113688031,AU
2113688032,2113688959,JP
2113688960,2113688991,SG
-2113688992,2113691135,JP
+2113688992,2113689079,JP
+2113689080,2113689080,SG
+2113689081,2113689083,JP
+2113689084,2113689084,SG
+2113689085,2113691135,JP
2113691136,2113691391,SG
2113691392,2113692415,JP
2113692416,2113692671,HK
-2113692672,2113693599,JP
+2113692672,2113693183,JP
+2113693184,2113693439,SG
+2113693440,2113693599,JP
2113693600,2113693615,HK
2113693616,2113693879,JP
2113693880,2113693887,AU
@@ -71686,9 +79983,7 @@
2113694208,2113695279,JP
2113695280,2113695287,SG
2113695288,2113716223,JP
-2113716224,2113724927,SG
-2113724928,2113725183,IN
-2113725184,2113728511,SG
+2113716224,2113728511,SG
2113728512,2113732607,JP
2113732608,2113761279,AU
2113761280,2113765375,VN
@@ -71699,9 +79994,7 @@
2113813504,2113830911,AU
2113830912,2113863679,CN
2113863680,2113929215,AU
-2113929216,2114392087,JP
-2114392088,2114392095,BR
-2114392096,2130706431,JP
+2113929216,2130706431,JP
2147483648,2147483903,NL
2147483904,2147484671,RO
2147484672,2147485695,TR
@@ -71874,12 +80167,10 @@
2151796736,2151800831,DE
2151800832,2151809023,PT
2151809024,2151940095,IT
-2151940096,2152321791,RU
-2152321792,2152322303,BG
-2152322304,2152322559,RU
-2152322560,2152323071,BG
-2152323072,2152464383,RU
-2152464384,2152529919,DK
+2151940096,2152464383,RU
+2152464384,2152473855,DK
+2152473856,2152474111,GB
+2152474112,2152529919,DK
2152529920,2152562687,NO
2152562688,2152595455,DK
2152595456,2152726527,FR
@@ -72019,10 +80310,9 @@
2155827200,2155831295,PL
2155831296,2155833343,RU
2155833344,2155833855,SE
-2155833856,2155834111,NL
-2155834112,2155834623,SE
+2155833856,2155834623,NL
2155834624,2155834879,LU
-2155834880,2155835391,SE
+2155834880,2155835391,NL
2155835392,2155839487,RO
2155839488,2155843583,FR
2155843584,2155844607,RU
@@ -72250,9 +80540,7 @@
2178785280,2179071999,US
2179072000,2179137535,SG
2179137536,2179398399,US
-2179398400,2179398655,GB
-2179398656,2179399423,US
-2179399424,2179399679,GB
+2179398400,2179399679,GB
2179399680,2179465215,US
2179465216,2179497983,LS
2179497984,2179530751,ZA
@@ -72278,9 +80566,7 @@
2180646953,2180646953,ES
2180646954,2180649005,US
2180649006,2180649006,ES
-2180649007,2180903679,US
-2180903680,2180903935,NL
-2180903936,2180907007,US
+2180649007,2180907007,US
2180907008,2180972543,KR
2180972544,2181038079,US
2181038080,2181040127,GB
@@ -72390,12 +80676,11 @@
2188719616,2188719743,FR
2188719744,2188719871,DE
2188724224,2188725247,NL
-2188725248,2188726271,GB
2188729472,2188729535,ES
2188736512,2188737791,GB
2188738307,2188738307,GB
2188740608,2188741631,GB
-2188753408,2188753919,DE
+2188752896,2188754943,DE
2188769472,2188769503,DE
2188769600,2188769631,DE
2188769664,2188770175,DE
@@ -72509,9 +80794,7 @@
2193817600,2193883135,NZ
2193883136,2194031007,US
2194031008,2194031023,JP
-2194031024,2194031231,US
-2194031232,2194031247,AU
-2194031248,2194407423,US
+2194031024,2194407423,US
2194407424,2194472959,BG
2194472960,2194538495,US
2194538496,2194604031,ES
@@ -72579,7 +80862,10 @@
2197553152,2197749759,US
2197749760,2197751807,IQ
2197751808,2197753855,RU
-2197753856,2197754879,GB
+2197753856,2197754623,GB
+2197754624,2197754698,ES
+2197754699,2197754699,GB
+2197754700,2197754879,ES
2197754880,2197755135,DK
2197755136,2197756159,GB
2197756160,2197756175,PT
@@ -72659,16 +80945,14 @@
2202593280,2202595327,CL
2202595328,2202596351,AR
2202596352,2202599423,BR
-2202599424,2202968291,US
-2202968292,2202968293,BH
-2202968294,2204172287,US
+2202599424,2204172287,US
2204172288,2204237823,SE
2204237824,2204303359,US
2204303360,2204368895,DE
2204368896,2204369151,MX
-2204369152,2204369407,PA
+2204369152,2204369407,CO
2204369408,2204369663,US
-2204369664,2204369919,PA
+2204369664,2204369919,MX
2204370944,2204376063,BR
2204376064,2204377087,CL
2204377088,2204378111,BR
@@ -72752,7 +81036,9 @@
2207852544,2207853055,RS
2207853056,2207854079,US
2207854080,2207855615,SG
-2207855616,2207907839,US
+2207855616,2207866903,US
+2207866904,2207866911,RS
+2207866912,2207907839,US
2207907840,2207973375,IT
2207973376,2208038911,NL
2208038912,2208235519,US
@@ -72815,8 +81101,7 @@
2210668544,2210669567,CR
2210669568,2210670591,AR
2210670592,2210673663,BR
-2210673664,2210674175,HN
-2210674176,2210674687,US
+2210673664,2210674687,US
2210674688,2210675711,BR
2210675712,2210676735,EC
2210676736,2210678783,BR
@@ -72938,7 +81223,9 @@
2214399304,2214399331,US
2214399332,2214399339,HK
2214399340,2214399343,IE
-2214399344,2214399887,US
+2214399344,2214399807,US
+2214399808,2214399871,IE
+2214399872,2214399887,US
2214399888,2214399903,IE
2214399904,2214404607,US
2214404608,2214404735,SG
@@ -73006,12 +81293,7 @@
2214589440,2214590463,BR
2214590464,2214591487,AR
2214591488,2214592511,BR
-2214592512,2215633279,US
-2215633280,2215633283,JP
-2215633284,2217377911,US
-2217377912,2217377912,IT
-2217377913,2217377913,DE
-2217377914,2217904127,US
+2214592512,2217904127,US
2217904128,2217906175,PR
2217906176,2218786815,US
2218786816,2219769855,IL
@@ -73068,9 +81350,7 @@
2229796864,2229862399,CN
2229862400,2229927935,US
2229927936,2229993471,AU
-2229993472,2230166527,US
-2230166528,2230167551,GB
-2230167552,2230583295,US
+2229993472,2230583295,US
2230583296,2230603775,GB
2230603776,2230607871,US
2230607872,2230637567,GB
@@ -73230,12 +81510,24 @@
2230689992,2230689999,US
2230690000,2230690007,AU
2230690008,2230690479,US
-2230690480,2230690735,AU
+2230690480,2230690495,AU
+2230690496,2230690503,US
+2230690504,2230690511,AU
+2230690512,2230690519,US
+2230690520,2230690535,AU
+2230690536,2230690543,US
+2230690544,2230690735,AU
2230690736,2230690751,US
-2230690752,2230690823,AU
+2230690752,2230690783,AU
+2230690784,2230690791,US
+2230690792,2230690799,AU
+2230690800,2230690807,US
+2230690808,2230690823,AU
2230690824,2230690831,US
2230690832,2230690863,AU
-2230690864,2230690959,US
+2230690864,2230690871,US
+2230690872,2230690879,AU
+2230690880,2230690959,US
2230690960,2230690975,AU
2230690976,2230691007,SG
2230691008,2230691039,MY
@@ -73279,7 +81571,11 @@
2230711968,2230712007,US
2230712008,2230712015,BR
2230712016,2230712047,US
-2230712048,2230712183,BR
+2230712048,2230712087,BR
+2230712088,2230712095,US
+2230712096,2230712103,BR
+2230712104,2230712111,US
+2230712112,2230712183,BR
2230712184,2230712191,US
2230712192,2230712239,IE
2230712240,2230713135,US
@@ -73359,7 +81655,7 @@
2248155136,2248163327,AL
2248163328,2248163839,US
2248163840,2248165375,GB
-2248165376,2248166399,US
+2248165376,2248167423,US
2248167424,2248169471,GB
2248169472,2248171519,NL
2248171520,2248177663,RU
@@ -73395,7 +81691,9 @@
2250178560,2250244095,CA
2250244096,2250375167,US
2250375168,2250440703,DE
-2250440704,2250506239,YE
+2250440704,2250491903,YE
+2250491904,2250492927,AE
+2250492928,2250506239,YE
2250506240,2250571775,GB
2250571776,2250637311,FI
2250637312,2250833919,US
@@ -73405,7 +81703,8 @@
2250957056,2250957311,SG
2250957312,2250957567,AU
2250957568,2250957823,JP
-2250957824,2250958335,GB
+2250957824,2250958079,US
+2250958080,2250958335,GB
2250958336,2251227135,US
2251227136,2251292671,NO
2251292672,2251685887,US
@@ -73414,7 +81713,9 @@
2251948032,2252013567,BE
2252013568,2252079103,FR
2252079104,2252210175,DE
-2252210176,2253062143,US
+2252210176,2252417023,US
+2252417024,2252419071,GB
+2252419072,2253062143,US
2253062144,2253127679,KR
2253127680,2253193215,DE
2253193216,2253455359,US
@@ -73453,9 +81754,9 @@
2256551936,2256601087,GB
2256601088,2256666623,US
2256666624,2256732159,DE
-2256732160,2256816127,US
-2256816128,2256817151,SG
-2256817152,2257190911,US
+2256732160,2256805375,US
+2256805376,2256805631,CA
+2256805632,2257190911,US
2257190912,2257256447,SE
2257256448,2257453055,US
2257453056,2257518591,GB
@@ -73492,7 +81793,9 @@
2258579464,2258579467,US
2258579468,2258579967,AU
2258579968,2258580031,US
-2258580032,2258582783,AU
+2258580032,2258581247,AU
+2258581248,2258581503,IN
+2258581504,2258582783,AU
2258582784,2258582791,GB
2258582792,2258583551,AU
2258583552,2258589695,GB
@@ -73518,9 +81821,7 @@
2258593536,2258593983,AU
2258593984,2258593991,NZ
2258593992,2258594047,AU
-2258594048,2258594207,HK
-2258594208,2258594303,AU
-2258594304,2258594607,HK
+2258594048,2258594607,HK
2258594608,2258594623,AU
2258594624,2258594751,HK
2258594752,2258595071,AU
@@ -73729,11 +82030,11 @@
2260467712,2260533247,NL
2260533248,2260598783,US
2260598784,2260664319,CA
-2260664320,2260719615,GB
-2260719616,2260720703,DE
+2260664320,2260720639,GB
+2260720640,2260720703,DE
2260720704,2260720719,GB
-2260720720,2260721663,DE
-2260721664,2260723711,GB
+2260720720,2260720895,DE
+2260720896,2260723711,GB
2260723712,2260724223,IL
2260724224,2260729343,GB
2260729344,2260729599,IL
@@ -73847,14 +82148,16 @@
2281023744,2281043967,US
2281043968,2281044031,FR
2281044032,2281044063,US
-2281044064,2281044223,FR
-2281044224,2281701375,US
+2281044064,2281046015,FR
+2281046016,2281701375,US
2281701376,2281705471,CH
2281705472,2281709567,US
2281709568,2281718527,CN
2281718528,2281718783,US
2281718784,2281725951,CN
-2281725952,2281729023,US
+2281725952,2281726719,US
+2281726720,2281726975,DE
+2281726976,2281729023,US
2281729024,2281729535,CN
2281729536,2281733119,US
2281733120,2281733375,CN
@@ -73874,9 +82177,9 @@
2282226246,2282226943,AU
2282226944,2282227199,US
2282227200,2282227711,AU
-2282227712,2282234111,US
-2282234112,2282234367,GB
-2282234368,2283151359,US
+2282227712,2282233855,US
+2282233856,2282235903,GB
+2282235904,2283151359,US
2283151360,2283159551,IN
2283159552,2283163455,US
2283163456,2283163471,CA
@@ -73966,14 +82269,15 @@
2291147520,2291147775,ES
2291147776,2291148799,CH
2291148800,2291149055,NL
-2291149056,2291151103,US
+2291149056,2291149823,US
+2291149824,2291150847,NL
+2291150848,2291151103,US
2291151104,2291151359,NL
2291151360,2291151871,US
2291151872,2291152383,NL
2291152384,2291153023,US
2291153024,2291153407,NL
-2291153408,2291154943,US
-2291154944,2291171327,GB
+2291153408,2291171327,US
2291171328,2291204095,NL
2291204096,2291269631,PR
2291269632,2291281919,US
@@ -74019,7 +82323,9 @@
2296691200,2296691711,CA
2296691712,2296694015,US
2296694016,2296694271,FI
-2296694272,2296774655,US
+2296694272,2296697855,US
+2296697856,2296698111,ES
+2296698112,2296774655,US
2296774656,2296840191,DE
2296840192,2296905727,NL
2296905728,2297036799,IN
@@ -74225,7 +82531,9 @@
2303355148,2303355151,DE
2303355152,2303355507,FR
2303355508,2303355511,DE
-2303355512,2303356863,FR
+2303355512,2303356687,FR
+2303356688,2303356703,GB
+2303356704,2303356863,FR
2303356864,2303356927,DE
2303356928,2303362063,FR
2303362064,2303362079,DE
@@ -74271,9 +82579,7 @@
2303383504,2303383519,GB
2303383520,2303383807,FR
2303383808,2303383935,ES
-2303383936,2303384959,FR
-2303384960,2303384991,GB
-2303384992,2303385087,FR
+2303383936,2303385087,FR
2303385088,2303385103,FI
2303385104,2303386879,FR
2303386880,2303387007,BE
@@ -74360,7 +82666,8 @@
2307195904,2307196927,NO
2307196928,2307197951,FI
2307197952,2307198975,DE
-2307198976,2307260415,NO
+2307198976,2307199999,SE
+2307200000,2307260415,NO
2307260416,2307278847,US
2307278848,2307280895,AU
2307280896,2307358719,US
@@ -74483,9 +82790,9 @@
2316828672,2316959743,AU
2316959744,2317221887,US
2317221888,2317287423,JP
-2317287424,2317357055,US
-2317357056,2317359103,AU
-2317359104,2317395967,US
+2317287424,2317357567,US
+2317357568,2317357823,AU
+2317357824,2317395967,US
2317395968,2317398015,NO
2317398016,2317412351,US
2317412352,2317413375,CA
@@ -74687,7 +82994,9 @@
2321797376,2321797631,GR
2321797632,2321797887,SE
2321797888,2321798143,NL
-2321798144,2321799167,CW
+2321798144,2321798911,CW
+2321798912,2321798943,BQ
+2321798944,2321799167,CW
2321799168,2321799935,BZ
2321799936,2321800191,CL
2321800192,2321801215,AR
@@ -74709,9 +83018,9 @@
2322137088,2322202623,US
2322202624,2322268159,SE
2322268160,2322333695,JP
-2322333696,2322342911,US
-2322342912,2322343167,BR
-2322343168,2322368511,US
+2322333696,2322341887,US
+2322341888,2322342399,MX
+2322342400,2322368511,US
2322368512,2322368767,MY
2322368768,2322923519,US
2322923520,2322924543,BR
@@ -75020,9 +83329,7 @@
2323668992,2323669759,CA
2323669760,2323670015,US
2323670016,2323670271,CA
-2323670272,2323671039,US
-2323671040,2323671295,CA
-2323671296,2323672127,US
+2323670272,2323672127,US
2323672128,2323672191,CA
2323672192,2323672383,US
2323672384,2323672415,CA
@@ -75069,7 +83376,9 @@
2323675520,2323675647,CA
2323675648,2323675839,US
2323675840,2323675903,CA
-2323675904,2323690495,US
+2323675904,2323680255,US
+2323680256,2323681279,NL
+2323681280,2323690495,US
2323690496,2323690751,IN
2323690752,2323699711,US
2323699712,2323700735,NL
@@ -75081,9 +83390,7 @@
2324021248,2324021503,MY
2324021504,2324037631,US
2324037632,2324103167,IL
-2324103168,2325979176,US
-2325979177,2325979177,JP
-2325979178,2327379967,US
+2324103168,2327379967,US
2327379968,2327380991,MX
2327380992,2327383039,BR
2327383040,2327384063,CL
@@ -75387,6 +83694,50 @@
2333885440,2333886463,FR
2333886464,2333887487,RU
2333887488,2333888511,ES
+2333888512,2333889535,IT
+2333889536,2333891583,ES
+2333891584,2333892607,DE
+2333892608,2333893631,CH
+2333893632,2333894655,GB
+2333894656,2333895679,TR
+2333895680,2333896703,GB
+2333896704,2333897727,NL
+2333897728,2333898751,CZ
+2333898752,2333899775,GB
+2333899776,2333900799,NO
+2333900800,2333903871,NL
+2333903872,2333904895,HU
+2333904896,2333905919,RO
+2333905920,2333906943,IT
+2333906944,2333907967,DE
+2333907968,2333908991,IT
+2333908992,2333910015,DE
+2333910016,2333911039,BE
+2333911040,2333912063,RU
+2333912064,2333913087,LT
+2333913088,2333914111,RO
+2333914112,2333915135,RU
+2333915136,2333916159,FI
+2333916160,2333917183,ES
+2333917184,2333918207,BE
+2333918208,2333919231,HU
+2333919232,2333920255,NL
+2333920256,2333921279,US
+2333921280,2333922303,GB
+2333922304,2333923327,TR
+2333923328,2333923583,US
+2333923584,2333923839,NL
+2333923840,2333924095,CA
+2333924096,2333924351,FR
+2333924352,2333925375,RU
+2333925376,2333926399,SE
+2333926400,2333927423,ES
+2333927424,2333928447,NL
+2333928448,2333929471,SE
+2333929472,2333930495,TR
+2333930496,2333931519,DE
+2333931520,2333932543,FR
+2333932544,2333933567,LV
2333933568,2334064639,DE
2334064640,2334916607,US
2334916608,2334982143,AU
@@ -75395,8 +83746,7 @@
2335023104,2335023359,FR
2335023360,2335023615,US
2335023616,2335031295,IE
-2335031296,2335045631,NL
-2335045632,2335047679,RU
+2335031296,2335047679,NL
2335047680,2335113215,US
2335113216,2335154175,ES
2335154176,2335178751,DE
@@ -75430,14 +83780,16 @@
2336010240,2336014335,PR
2336014336,2336161791,US
2336161792,2336227327,NL
-2336227328,2336260095,CA
+2336227328,2336260095,SA
2336260096,2336358399,US
2336358400,2336407551,DE
2336407552,2336410623,SE
2336410624,2336411647,US
2336411648,2336412671,SG
2336412672,2336423935,SE
-2336423936,2336882687,US
+2336423936,2336737279,US
+2336737280,2336737535,IN
+2336737536,2336882687,US
2336882688,2336948223,FI
2336948224,2337013759,DE
2337013760,2337210367,US
@@ -75605,7 +83957,8 @@
2343567360,2343632895,CN
2343632896,2343698431,US
2343698432,2343714815,CH
-2343714816,2343715327,NL
+2343714816,2343714816,US
+2343714817,2343715327,NL
2343715328,2343715839,US
2343715840,2343716351,NL
2343716352,2343719167,US
@@ -75617,12 +83970,27 @@
2343829504,2343829759,JP
2343829760,2343830015,CA
2343830016,2343830271,BR
-2343830272,2343845887,US
+2343830272,2343831551,US
+2343831552,2343833599,IN
+2343833600,2343836671,US
+2343836672,2343836799,CA
+2343836800,2343845887,US
2343845888,2343862271,NZ
-2343862272,2343864319,SG
-2343864320,2343882751,JP
+2343862272,2343867391,SG
+2343867392,2343867423,JP
+2343867424,2343867455,SG
+2343867456,2343882751,JP
2343882752,2343886847,SG
-2343886848,2343934975,US
+2343886848,2343892991,US
+2343892992,2343893247,IE
+2343893248,2343893503,GB
+2343893504,2343893759,FR
+2343893760,2343894015,DE
+2343894016,2343894271,SG
+2343894272,2343894527,JP
+2343894528,2343894783,IN
+2343894784,2343895039,AU
+2343895040,2343934975,US
2343934976,2343935999,IL
2343936000,2344026111,US
2344026112,2344091647,CN
@@ -75750,8 +84118,8 @@
2364604416,2364671487,US
2364671488,2364671743,HK
2364671744,2364676863,US
-2364676864,2364677119,GB
-2364677120,2364725503,US
+2364676864,2364676867,GB
+2364676868,2364725503,US
2364725504,2364725759,IN
2364725760,2364735487,US
2364735488,2364801023,CN
@@ -75836,6 +84204,67 @@
2371814145,2371878911,NL
2371878912,2371944447,BE
2371944448,2372009983,GB
+2372009984,2372012031,DE
+2372012032,2372013055,LT
+2372013056,2372014079,DK
+2372014080,2372016127,NL
+2372016128,2372017151,LT
+2372017152,2372018175,RU
+2372018176,2372019199,NL
+2372019200,2372020223,ES
+2372020224,2372021247,US
+2372021248,2372022271,DE
+2372022272,2372023295,TR
+2372023296,2372024319,ES
+2372024320,2372025343,LT
+2372025344,2372026367,GB
+2372026368,2372027391,JO
+2372027392,2372028415,CZ
+2372028416,2372029439,RO
+2372029440,2372030463,ES
+2372030464,2372031487,PA
+2372031488,2372032511,PL
+2372032512,2372033535,GB
+2372033536,2372034559,US
+2372034560,2372035583,DE
+2372035584,2372036095,GB
+2372036096,2372036351,DE
+2372036352,2372036607,RS
+2372036608,2372038655,UA
+2372038656,2372040703,TR
+2372040704,2372041727,FR
+2372041728,2372042751,IT
+2372042752,2372043775,GB
+2372043776,2372044799,NL
+2372044800,2372045823,DE
+2372045824,2372046847,AL
+2372046848,2372047871,DE
+2372047872,2372048895,UA
+2372048896,2372049919,DE
+2372049920,2372050943,LT
+2372050944,2372051967,LV
+2372051968,2372052991,DE
+2372052992,2372054015,RU
+2372054016,2372055039,FR
+2372055040,2372056063,TR
+2372056064,2372057087,DE
+2372057088,2372059135,LV
+2372059136,2372060159,FI
+2372060160,2372061183,NL
+2372061184,2372062207,IT
+2372062208,2372063231,TR
+2372063232,2372064255,GB
+2372064256,2372065279,NL
+2372065280,2372066303,US
+2372066304,2372067327,FR
+2372067328,2372068351,AT
+2372068352,2372069375,NL
+2372069376,2372070399,RU
+2372070400,2372071423,SE
+2372071424,2372072447,NL
+2372072448,2372073471,PS
+2372073472,2372074495,HU
+2372074496,2372075519,SE
2372075520,2372206591,DE
2372206592,2372214783,UA
2372214784,2372218879,DE
@@ -75872,8 +84301,8 @@
2372244224,2372244479,SG
2372244480,2372251391,US
2372251392,2372258047,RU
-2372258048,2372258175,NL
-2372258176,2372272127,RU
+2372258048,2372258303,NL
+2372258304,2372272127,RU
2372272128,2372337663,US
2372337664,2372403199,ID
2372403200,2372468735,US
@@ -76035,9 +84464,7 @@
2378432512,2378498047,TR
2378498048,2378500607,US
2378500608,2378500863,GB
-2378500864,2378504191,US
-2378504192,2378506239,NL
-2378506240,2378694655,US
+2378500864,2378694655,US
2378694656,2378760191,DE
2378760192,2378825727,AT
2378825728,2378891263,US
@@ -76049,9 +84476,7 @@
2379284480,2380201983,US
2380201984,2380267519,KR
2380267520,2380398591,US
-2380398592,2380420095,IL
-2380420096,2380420863,GB
-2380420864,2380423167,IL
+2380398592,2380423167,IL
2380423168,2380427519,US
2380427520,2380428799,GB
2380428800,2380430847,IL
@@ -76071,8 +84496,7 @@
2380457216,2380457471,SG
2380457472,2380457727,US
2380457728,2380457983,HK
-2380457984,2380463615,IL
-2380463616,2380464127,US
+2380457984,2380464127,IL
2380464128,2380464639,FR
2380464640,2380465151,US
2380465152,2380465439,FR
@@ -76080,9 +84504,7 @@
2380465444,2380529663,FR
2380529664,2380558335,GB
2380558336,2380560383,ZA
-2380560384,2380578815,GB
-2380578816,2380580863,JP
-2380580864,2380595199,GB
+2380560384,2380595199,GB
2380660736,2380726271,US
2380726272,2380791807,GB
2380791808,2381119487,US
@@ -76123,9 +84545,7 @@
2382422016,2382426111,JM
2382426112,2382430207,US
2382430208,2382626815,CA
-2382626816,2382654207,US
-2382654208,2382654463,CN
-2382654464,2382657023,US
+2382626816,2382657023,US
2382657024,2382657535,CN
2382657536,2382657791,US
2382657792,2382658047,CN
@@ -76159,8 +84579,8 @@
2385295616,2385307727,CA
2385307728,2385307735,US
2385307736,2385903615,CA
-2385903616,2385908735,US
-2385908736,2385909759,VG
+2385903616,2385909503,US
+2385909504,2385909759,HK
2385909760,2385915903,US
2385915904,2385919999,CA
2385920000,2385952767,US
@@ -76188,7 +84608,9 @@
2387345408,2387410943,CA
2387410944,2387476479,US
2387476480,2387542015,CA
-2387542016,2387607551,US
+2387542016,2387587583,US
+2387587584,2387588095,AU
+2387588096,2387607551,US
2387607552,2388328447,CA
2388328448,2388330495,US
2388330496,2388332543,NL
@@ -76336,7 +84758,7 @@
2405105664,2405171199,US
2405171200,2405187583,AU
2405187584,2405203967,SG
-2405203968,2405236735,AU
+2405203968,2405236735,SA
2405236736,2405302271,DE
2405302272,2405367807,JP
2405367808,2405433343,US
@@ -76578,7 +85000,9 @@
2417688576,2417754111,SE
2417754112,2418016255,US
2418016256,2418081791,GB
-2418081792,2418296319,US
+2418081792,2418284543,US
+2418284544,2418286591,MX
+2418286592,2418296319,US
2418296320,2418297343,IN
2418297344,2418305023,US
2418305024,2418305279,IN
@@ -76604,8 +85028,8 @@
2418331648,2418332159,US
2418332160,2418332671,IN
2418332672,2418333183,US
-2418333184,2418339839,IN
-2418339840,2418340863,US
+2418333184,2418339071,IN
+2418339072,2418340863,US
2418340864,2418341375,IN
2418341376,2418341887,US
2418341888,2418342911,IN
@@ -76622,8 +85046,7 @@
2419069952,2419071999,VN
2419072000,2419073023,PH
2419073024,2419074047,HK
-2419074048,2419074559,AU
-2419074560,2419075071,IN
+2419074048,2419075071,AU
2419075072,2419077119,KR
2419077120,2419079167,IN
2419079168,2419080191,HK
@@ -76680,7 +85103,13 @@
2419458048,2419523583,NL
2419523584,2419589119,AU
2419589120,2419654655,FR
-2419654656,2419720191,SE
+2419654656,2419673343,SE
+2419673344,2419674367,US
+2419674368,2419687423,SE
+2419687424,2419689471,NO
+2419689472,2419718655,SE
+2419718656,2419718911,US
+2419718912,2419720191,SE
2419720192,2420047871,US
2420047872,2420113407,SE
2420113408,2420178943,PT
@@ -76698,7 +85127,8 @@
2421358592,2421424127,US
2421424128,2421489663,NO
2421489664,2421555199,CH
-2421555200,2421620735,US
+2421555200,2421587967,SA
+2421587968,2421620735,US
2421620736,2421686271,GB
2421686272,2422145023,US
2422145024,2422154239,NL
@@ -76756,7 +85186,9 @@
2426976544,2426976767,US
2426976768,2426976799,CA
2426976800,2426976991,US
-2426976992,2426984447,CA
+2426976992,2426983423,CA
+2426983424,2426983431,US
+2426983432,2426984447,CA
2426984448,2426988799,US
2426988800,2426994687,CA
2426994688,2427214708,US
@@ -76768,168 +85200,82 @@
2427453440,2427536895,NO
2427536896,2427537151,US
2427537152,2427584511,NO
-2427584512,2427584743,US
-2427584744,2427584765,CA
-2427584766,2427585235,US
-2427585236,2427585271,CA
-2427585272,2427585275,BR
-2427585276,2427585277,MX
-2427585278,2427585544,US
-2427585545,2427585546,GB
-2427585547,2427585548,US
-2427585549,2427585550,GB
-2427585551,2427585551,US
-2427585552,2427585552,GB
-2427585553,2427585553,US
-2427585554,2427585554,GB
-2427585555,2427585556,US
-2427585557,2427585557,GB
-2427585558,2427585558,US
-2427585559,2427585559,GB
-2427585560,2427585560,US
-2427585561,2427585562,GB
-2427585563,2427585563,US
-2427585564,2427585565,GB
-2427585566,2427585566,US
-2427585567,2427585567,GB
-2427585568,2427585568,US
-2427585569,2427585569,GB
-2427585570,2427585570,US
-2427585571,2427585571,GB
-2427585572,2427585572,US
-2427585573,2427585573,GB
-2427585574,2427585574,US
-2427585575,2427585576,GB
-2427585577,2427585577,US
-2427585578,2427585579,GB
-2427585580,2427585580,US
-2427585581,2427585582,GB
-2427585583,2427585583,US
-2427585584,2427585584,GB
-2427585585,2427585585,US
-2427585586,2427585586,GB
-2427585587,2427585587,US
-2427585588,2427585589,GB
-2427585590,2427585590,US
-2427585591,2427585591,GB
-2427585592,2427585592,US
-2427585593,2427585593,GB
-2427585594,2427585594,US
-2427585595,2427585595,GB
-2427585596,2427585596,US
-2427585597,2427585605,GB
-2427585606,2427585607,US
-2427585608,2427585615,GB
-2427585616,2427585619,US
-2427585620,2427585625,GB
-2427585626,2427585631,US
+2427584512,2427585031,US
+2427585032,2427585033,CA
+2427585034,2427585597,US
+2427585598,2427585601,CA
+2427585602,2427585631,US
2427585632,2427585663,ES
2427585664,2427585679,SE
-2427585680,2427585683,TR
-2427585684,2427585695,US
+2427585680,2427585695,US
2427585696,2427585711,AE
-2427585712,2427585792,US
-2427585793,2427585799,NL
-2427585800,2427585887,US
-2427585888,2427585917,DE
-2427585918,2427585919,US
-2427585920,2427585920,FR
-2427585921,2427585921,US
-2427585922,2427585922,FR
-2427585923,2427585924,US
-2427585925,2427585926,FR
-2427585927,2427585927,US
-2427585928,2427585928,FR
-2427585929,2427585929,US
-2427585930,2427585930,FR
-2427585931,2427585931,US
-2427585932,2427585934,FR
-2427585935,2427585935,US
-2427585936,2427585936,FR
-2427585937,2427585937,US
-2427585938,2427585938,FR
-2427585939,2427585939,US
-2427585940,2427585940,FR
-2427585941,2427585941,US
-2427585942,2427585942,FR
-2427585943,2427585943,US
-2427585944,2427585959,FR
-2427585960,2427585983,US
-2427585984,2427585984,NL
-2427585985,2427585986,US
-2427585987,2427585988,NL
-2427585989,2427586000,US
-2427586001,2427586001,CH
-2427586002,2427586002,US
-2427586003,2427586003,CH
-2427586004,2427586004,US
-2427586005,2427586006,CH
-2427586007,2427586015,US
-2427586016,2427586016,BE
-2427586017,2427586048,US
-2427586049,2427586056,JP
-2427586057,2427586059,US
-2427586060,2427586060,JP
-2427586061,2427586063,US
-2427586064,2427586064,JP
-2427586065,2427586111,US
-2427586112,2427586123,HK
-2427586124,2427586129,US
-2427586130,2427586131,SG
-2427586132,2427586145,US
-2427586146,2427586147,TW
-2427586148,2427586151,US
-2427586152,2427586153,MO
-2427586154,2427586175,US
-2427586176,2427586217,AU
-2427586218,2427586219,US
-2427586220,2427586221,AU
-2427586222,2427586304,US
-2427586305,2427586309,AU
+2427585712,2427585795,US
+2427585796,2427585799,NL
+2427585800,2427585883,US
+2427585884,2427585885,CA
+2427585886,2427585911,US
+2427585912,2427585913,DE
+2427585914,2427585951,US
+2427585952,2427585953,FR
+2427585954,2427586019,US
+2427586020,2427586021,CA
+2427586022,2427586025,US
+2427586026,2427586027,CA
+2427586028,2427586305,US
+2427586306,2427586309,AU
2427586310,2427586559,US
2427586560,2427586687,GB
2427586688,2427586709,ES
-2427586710,2427586719,GB
-2427586720,2427586729,SE
-2427586730,2427586731,NO
-2427586732,2427586735,GB
+2427586710,2427586721,GB
+2427586722,2427586725,SE
+2427586726,2427586727,GB
+2427586728,2427586729,SE
+2427586730,2427586735,GB
2427586736,2427586741,TR
-2427586742,2427586751,GB
-2427586752,2427586763,AE
-2427586764,2427586815,GB
-2427586816,2427586816,NL
-2427586817,2427586823,CH
-2427586824,2427586861,IT
-2427586862,2427586879,CH
-2427586880,2427586913,DE
-2427586914,2427586943,CH
+2427586742,2427586753,GB
+2427586754,2427586759,AE
+2427586760,2427586823,GB
+2427586824,2427586859,IT
+2427586860,2427586879,GB
+2427586880,2427586909,DE
+2427586910,2427586911,GB
+2427586912,2427586913,DE
+2427586914,2427586943,GB
2427586944,2427586945,BE
-2427586946,2427586959,CH
+2427586946,2427586959,GB
2427586960,2427586965,NL
-2427586966,2427586967,DK
-2427586968,2427586991,CH
+2427586966,2427586975,GB
+2427586976,2427586979,CH
+2427586980,2427586981,AT
+2427586982,2427586983,CH
+2427586984,2427586991,GB
2427586992,2427586993,AT
-2427586994,2427587007,CH
-2427587008,2427587072,FR
-2427587073,2427587583,GB
-2427587584,2427587711,JP
-2427587712,2427587712,KR
-2427587713,2427587839,JP
-2427587840,2427588095,AU
-2427588096,2427588159,HK
+2427586994,2427587007,GB
+2427587008,2427587071,FR
+2427587072,2427587583,GB
+2427587584,2427587591,AU
+2427587592,2427587605,JP
+2427587606,2427587607,AU
+2427587608,2427587609,JP
+2427587610,2427587611,AU
+2427587612,2427587617,JP
+2427587618,2427587711,AU
+2427587712,2427587713,KR
+2427587714,2427588095,AU
+2427588096,2427588097,HK
+2427588098,2427588103,AU
+2427588104,2427588115,HK
+2427588116,2427588159,AU
2427588160,2427588163,TW
-2427588164,2427588175,HK
-2427588176,2427588176,MO
-2427588177,2427588177,MN
-2427588178,2427588178,MO
-2427588179,2427588179,MN
-2427588180,2427588191,MO
-2427588192,2427588351,HK
-2427588352,2427588352,SG
-2427588353,2427588359,AU
-2427588360,2427588365,SG
-2427588366,2427588369,TH
-2427588370,2427588607,AU
+2427588164,2427588175,AU
+2427588176,2427588191,MO
+2427588192,2427588347,AU
+2427588348,2427588349,HK
+2427588350,2427588361,AU
+2427588362,2427588365,SG
+2427588366,2427588383,AU
+2427588384,2427588385,TH
+2427588386,2427588607,AU
2427588608,2427590655,GB
2427590656,2427591880,US
2427591881,2427591881,CA
@@ -76943,14 +85289,12 @@
2427591913,2427591913,CL
2427591914,2427591914,BR
2427591915,2427591935,US
-2427591936,2427591936,IE
-2427591937,2427591937,GB
-2427591938,2427591945,IE
+2427591936,2427591945,GB
2427591946,2427591946,AT
2427591947,2427591947,BE
2427591948,2427591948,CZ
2427591949,2427591949,DK
-2427591950,2427591950,FI
+2427591950,2427591950,SE
2427591951,2427591951,FR
2427591952,2427591952,DE
2427591953,2427591953,HU
@@ -77007,7 +85351,9 @@
2429580288,2429581055,US
2429581056,2429581311,RO
2429581312,2429583359,US
-2429583360,2429616127,AT
+2429583360,2429605631,AT
+2429605632,2429605887,DE
+2429605888,2429616127,AT
2429616128,2429637119,NL
2429637376,2429642751,NL
2429642752,2429644799,RU
@@ -77100,7 +85446,9 @@
2435055616,2435107327,GB
2435107328,2435107583,US
2435107584,2435121151,GB
-2435121152,2435578879,NL
+2435121152,2435514367,NL
+2435514368,2435577855,GB
+2435577856,2435578879,NL
2435578880,2435579903,GB
2435579904,2435710975,NL
2435710976,2435776511,DE
@@ -77109,8 +85457,7 @@
2436366336,2436628479,NL
2436628480,2436630527,BE
2436630528,2436632575,NL
-2436632576,2436634623,DK
-2436634624,2436694015,BE
+2436632576,2436694015,BE
2436694016,2436759551,NL
2436759552,2436767743,GB
2436767744,2436767999,NL
@@ -77182,7 +85529,9 @@
2448366144,2448366271,PL
2448366272,2448366591,FR
2448366592,2448367615,PL
-2448367616,2448370015,FR
+2448367616,2448367823,FR
+2448367824,2448367839,ES
+2448367840,2448370015,FR
2448370016,2448370047,FI
2448370048,2448370703,FR
2448370704,2448370711,BE
@@ -77202,7 +85551,11 @@
2448375760,2448375775,ES
2448375776,2448379903,FR
2448379904,2448383999,PL
-2448384000,2448386047,FR
+2448384000,2448384735,FR
+2448384736,2448384767,DE
+2448384768,2448385255,FR
+2448385256,2448385259,ES
+2448385260,2448386047,FR
2448386048,2448386175,GB
2448386176,2448386815,FR
2448386816,2448387071,LT
@@ -77234,7 +85587,9 @@
2448394304,2448394351,FR
2448394352,2448394367,ES
2448394368,2448394383,FI
-2448394384,2448394463,FR
+2448394384,2448394431,FR
+2448394432,2448394439,DE
+2448394440,2448394463,FR
2448394464,2448394479,DE
2448394480,2448394639,FR
2448394640,2448394655,IT
@@ -77243,7 +85598,9 @@
2448394676,2448394679,DE
2448394680,2448394731,FR
2448394732,2448394735,DE
-2448394736,2448394767,FR
+2448394736,2448394747,FR
+2448394748,2448394751,DE
+2448394752,2448394767,FR
2448394768,2448394771,DE
2448394772,2448394775,FR
2448394776,2448394783,DE
@@ -77294,9 +85651,7 @@
2448411004,2448411007,GB
2448411008,2448411183,FR
2448411184,2448411199,GB
-2448411200,2448411279,FR
-2448411280,2448411283,GB
-2448411284,2448411439,FR
+2448411200,2448411439,FR
2448411440,2448411455,GB
2448411456,2448411647,FR
2448411648,2448412671,GB
@@ -77309,7 +85664,9 @@
2448414224,2448414239,DE
2448414240,2448414375,FR
2448414376,2448414383,ES
-2448414384,2448414591,FR
+2448414384,2448414387,FR
+2448414388,2448414391,IT
+2448414392,2448414591,FR
2448414592,2448414719,DE
2448414720,2448414751,FR
2448414752,2448414783,PL
@@ -77321,9 +85678,7 @@
2448415984,2448415991,ES
2448415992,2448417311,FR
2448417312,2448417319,ES
-2448417320,2448417887,FR
-2448417888,2448417903,ES
-2448417904,2448417967,FR
+2448417320,2448417967,FR
2448417968,2448417975,ES
2448417976,2448418559,FR
2448418560,2448418687,NL
@@ -77430,7 +85785,9 @@
2450718720,2450784255,FR
2450784256,2450849791,US
2450849792,2450915327,SE
-2450915328,2451044351,US
+2450915328,2451032063,US
+2451032064,2451032575,AU
+2451032576,2451044351,US
2451044352,2451046399,ID
2451046400,2452619263,US
2452619264,2452684799,IT
@@ -77455,11 +85812,13 @@
2453807104,2453815295,GB
2453815296,2453817087,BG
2453817088,2453817343,US
-2453817344,2453824472,BG
+2453817344,2453818385,BG
+2453818386,2453818386,US
+2453818387,2453824472,BG
2453824473,2453824473,US
2453824474,2453828863,BG
-2453828864,2453831167,US
-2453831168,2453831679,BG
+2453828864,2453831423,US
+2453831424,2453831679,BG
2453831680,2453833727,IR
2453833728,2453835775,ES
2453835776,2453837823,FR
@@ -77491,11 +85850,12 @@
2454781952,2454847487,FI
2454847488,2454864895,US
2454864896,2454865151,GB
-2454865152,2454865407,US
-2454865408,2454865663,CR
-2454865664,2454904831,US
+2454865152,2454904831,US
2454904832,2454906879,AR
-2454906880,2454913023,US
+2454906880,2454907391,CL
+2454907392,2454907711,US
+2454907712,2454907719,CL
+2454907720,2454913023,US
2454913024,2454978559,CL
2454978560,2455175167,US
2455175168,2455240703,GB
@@ -77510,7 +85870,9 @@
2455246848,2455247871,IN
2455247872,2455248127,AU
2455248128,2455248895,US
-2455248896,2455257087,TH
+2455248896,2455251199,TH
+2455251200,2455251455,MM
+2455251456,2455257087,TH
2455257088,2455261183,PH
2455262208,2455263231,KR
2455263232,2455265279,PH
@@ -77680,7 +86042,7 @@
2457364480,2457365503,RU
2457365504,2457366015,CZ
2457366016,2457366527,RU
-2457366528,2457367551,GB
+2457366528,2457367551,CZ
2457367552,2457369599,RU
2457369600,2457370623,UA
2457370624,2457377791,BY
@@ -77715,7 +86077,7 @@
2457399808,2457400319,CZ
2457400320,2457400575,UA
2457400576,2457400831,KG
-2457400832,2457402367,RU
+2457400832,2457402367,CZ
2457402368,2457403391,SY
2457403392,2457520895,US
2457520896,2457521151,BE
@@ -77753,8 +86115,8 @@
2459959296,2460024831,JP
2460024832,2460090367,FI
2460090368,2460152319,GB
-2460152320,2460152831,FR
-2460152832,2460155903,GB
+2460152320,2460153855,FR
+2460153856,2460155903,GB
2460155904,2460221439,US
2460221440,2460286975,BR
2460286976,2460549119,US
@@ -77776,9 +86138,7 @@
2461601792,2461605887,GB
2461605888,2461607935,LB
2461607936,2461609983,FR
-2461609984,2461611577,BE
-2461611578,2461611579,NL
-2461611580,2461612031,BE
+2461609984,2461612031,BE
2461612032,2461614079,IL
2461614080,2461622271,CH
2461622272,2461630463,DE
@@ -77841,7 +86201,9 @@
2463301632,2463367167,FI
2463367168,2463432703,SI
2463432704,2463498239,NO
-2463498240,2463629311,US
+2463498240,2463514623,US
+2463514624,2463516671,IE
+2463516672,2463629311,US
2463629312,2463694847,CH
2463694848,2463825919,US
2463825920,2463891455,ES
@@ -77884,10 +86246,12 @@
2465693440,2465693455,FR
2465693456,2465693695,IT
2465693696,2465697791,NO
-2465697792,2465718271,SE
-2465718272,2465718290,NO
-2465718291,2465718291,SE
-2465718292,2465721855,NO
+2465697792,2465718399,SE
+2465718400,2465718431,NO
+2465718432,2465718463,SE
+2465718464,2465718495,NO
+2465718496,2465718527,SE
+2465718528,2465721855,NO
2465721856,2465721983,SE
2465721984,2465722367,NO
2465722368,2465726463,SE
@@ -77968,9 +86332,7 @@
2466326016,2466326271,SG
2466326272,2466336767,US
2466336768,2466337023,SG
-2466337024,2466376191,US
-2466376192,2466376447,CA
-2466376448,2466643967,US
+2466337024,2466643967,US
2466643968,2466709503,KR
2466709504,2466775039,HU
2466775040,2466840575,HK
@@ -78054,6 +86416,70 @@
2471223296,2471231487,US
2471231488,2471297023,AU
2471297024,2471362559,GB
+2471362560,2471363583,LT
+2471363584,2471364607,GB
+2471364608,2471365631,RU
+2471365632,2471366143,NL
+2471366144,2471366399,GB
+2471366400,2471366655,US
+2471366656,2471367679,DE
+2471367680,2471369727,ES
+2471369728,2471370751,DK
+2471370752,2471371775,AT
+2471371776,2471373823,FR
+2471373824,2471374847,LB
+2471374848,2471375871,DE
+2471375872,2471376895,US
+2471376896,2471377919,SK
+2471377920,2471378943,GB
+2471378944,2471379967,RU
+2471379968,2471380991,BE
+2471380992,2471382015,DK
+2471382016,2471383039,BG
+2471383040,2471384063,FI
+2471384064,2471385087,ES
+2471385088,2471387135,DE
+2471387136,2471388159,EE
+2471388160,2471389183,DE
+2471389184,2471390207,BE
+2471390208,2471391231,DE
+2471391232,2471392255,FR
+2471392256,2471393279,UA
+2471393280,2471394303,LT
+2471394304,2471395327,US
+2471395328,2471396351,DE
+2471396352,2471397375,AE
+2471397376,2471398399,CH
+2471398400,2471399423,BG
+2471399424,2471400447,FR
+2471400448,2471401471,HR
+2471401472,2471402495,NL
+2471402496,2471403519,SE
+2471403520,2471404543,AL
+2471404544,2471405567,FR
+2471405568,2471406591,SK
+2471406592,2471407615,FR
+2471407616,2471408639,DE
+2471408640,2471409663,RU
+2471409664,2471410687,IT
+2471410688,2471411711,RU
+2471411712,2471412735,CH
+2471412736,2471413759,LT
+2471413760,2471414783,PT
+2471414784,2471415807,GB
+2471415808,2471416831,CH
+2471416832,2471417855,IT
+2471417856,2471418879,SI
+2471418880,2471419135,GB
+2471419136,2471419647,US
+2471419648,2471420927,GB
+2471420928,2471421951,SE
+2471421952,2471422975,PL
+2471422976,2471423999,NL
+2471424000,2471425023,NO
+2471425024,2471426047,NL
+2471426048,2471427071,AT
+2471427072,2471428095,IT
2471428096,2471624703,US
2471624704,2471690239,SA
2471690240,2471821311,ES
@@ -78203,9 +86629,7 @@
2475156064,2475156095,FI
2475156096,2475156479,FR
2475156480,2475156607,ES
-2475156608,2475156687,FR
-2475156688,2475156695,GB
-2475156696,2475157247,FR
+2475156608,2475157247,FR
2475157248,2475157279,CZ
2475157280,2475157615,FR
2475157616,2475157623,DE
@@ -78218,9 +86642,7 @@
2475158912,2475158975,PL
2475158976,2475159423,FR
2475159424,2475159551,DE
-2475159552,2475159711,FR
-2475159712,2475159743,ES
-2475159744,2475160351,FR
+2475159552,2475160351,FR
2475160352,2475160383,PL
2475160384,2475160447,FR
2475160448,2475160575,NL
@@ -78231,9 +86653,9 @@
2475161216,2475161407,FR
2475161408,2475161439,FI
2475161440,2475161471,PL
-2475161472,2475161619,FR
-2475161620,2475161623,ES
-2475161624,2475161983,FR
+2475161472,2475161763,FR
+2475161764,2475161767,BE
+2475161768,2475161983,FR
2475161984,2475161999,LT
2475162000,2475162351,FR
2475162352,2475162367,ES
@@ -78505,8 +86927,7 @@
2487025664,2487156735,US
2487156736,2487222271,PT
2487222272,2487222527,HK
-2487222528,2487222783,JP
-2487222784,2487223039,AU
+2487222528,2487223039,AU
2487223040,2487223295,SG
2487223296,2487224319,IN
2487224320,2487224831,GB
@@ -78519,8 +86940,7 @@
2487227648,2487227903,AR
2487227904,2487228415,US
2487228416,2487228927,ZA
-2487228928,2487229183,US
-2487229184,2487230463,GB
+2487228928,2487230463,GB
2487230464,2487236607,US
2487236608,2487237631,GB
2487237632,2487238143,MF
@@ -78592,7 +87012,11 @@
2494386176,2494388223,MX
2494388224,2494562303,US
2494562304,2494627839,GB
-2494627840,2494676991,US
+2494627840,2494670847,US
+2494670848,2494670963,GB
+2494670964,2494670967,US
+2494670968,2494671103,GB
+2494671104,2494676991,US
2494676992,2494679039,AU
2494679040,2494689791,US
2494689792,2494690047,IN
@@ -78602,10 +87026,7 @@
2495021056,2495152127,US
2495217664,2495283199,US
2495283200,2495348735,CH
-2495348736,2495349051,DE
-2495349052,2495349052,US
-2495349053,2495350783,DE
-2495350784,2495807487,US
+2495348736,2495807487,US
2495807488,2495873023,AU
2495873024,2495938559,CH
2495938560,2496004095,GB
@@ -78651,6 +87072,10 @@
2500034560,2500038655,GB
2500038656,2500040703,IT
2500040704,2500042751,LB
+2500042752,2500043775,FR
+2500043776,2500044799,DE
+2500044800,2500045823,RU
+2500045824,2500046847,SA
2500046848,2500048895,IT
2500048896,2500050943,MD
2500050944,2500067327,KZ
@@ -78658,11 +87083,14 @@
2500132992,2500133023,NL
2500133024,2500135679,US
2500135680,2500135935,NL
-2500135936,2500136959,US
-2500136960,2500139007,BE
-2500139008,2500139583,US
+2500135936,2500137535,US
+2500137536,2500137599,BE
+2500137600,2500137983,US
+2500137984,2500138495,BE
+2500138496,2500139007,US
+2500139008,2500139583,BE
2500139584,2500139647,NL
-2500139648,2500141055,US
+2500139648,2500141055,BE
2500141056,2500141311,IE
2500141312,2500141823,US
2500141824,2500144127,IE
@@ -78671,14 +87099,16 @@
2500145152,2500149343,US
2500149344,2500149375,GB
2500149376,2500149503,US
-2500149504,2500149759,IE
+2500149504,2500149759,NL
2500149760,2500150559,US
2500150560,2500150591,GB
2500150592,2500150655,US
2500150656,2500150719,GB
2500150720,2500152495,US
2500152496,2500152511,GB
-2500152512,2500154751,US
+2500152512,2500153087,US
+2500153088,2500153343,GB
+2500153344,2500154751,US
2500154752,2500154815,GB
2500154816,2500155199,US
2500155200,2500155391,GB
@@ -78700,9 +87130,9 @@
2500170752,2500170752,FI
2500170753,2500177935,US
2500177936,2500177943,PL
-2500177944,2500179967,US
-2500179968,2500182015,HR
-2500182016,2500188159,US
+2500177944,2500180735,US
+2500180736,2500181503,HR
+2500181504,2500188159,US
2500188160,2500188223,FR
2500188224,2500188287,CH
2500188288,2500188415,FR
@@ -78718,10 +87148,8 @@
2500194304,2500198399,FI
2500198400,2500199471,GB
2500199472,2500199475,IE
-2500199476,2500200703,GB
-2500200704,2500201535,US
-2500201536,2500201543,GB
-2500201544,2500202879,US
+2500199476,2500202495,GB
+2500202496,2500202879,US
2500202880,2500203007,ES
2500203008,2500203519,US
2500203520,2500204543,IT
@@ -78730,11 +87158,11 @@
2500208640,2500210687,FR
2500210688,2500211671,US
2500211672,2500211679,RO
-2500211680,2500211711,US
-2500211712,2500211728,CH
+2500211680,2500211728,US
2500211729,2500211730,SI
-2500211731,2500212735,CH
-2500212736,2500212991,FR
+2500211731,2500212415,US
+2500212416,2500212423,CH
+2500212424,2500212991,US
2500212992,2500213247,ES
2500213248,2500213759,FI
2500213760,2500213819,US
@@ -78743,7 +87171,8 @@
2500216832,2500218879,FR
2500218880,2500221455,US
2500221456,2500221459,FR
-2500221460,2500223999,US
+2500221460,2500222975,US
+2500222976,2500223999,GB
2500224000,2500225023,BE
2500225024,2500225551,US
2500225552,2500225559,ES
@@ -78761,12 +87190,13 @@
2500233216,2500233727,DK
2500233728,2500234239,DE
2500234240,2500235263,DK
-2500235264,2500235775,GB
+2500235264,2500235775,US
2500235776,2500236031,ES
-2500236032,2500236837,GB
+2500236032,2500236287,US
+2500236288,2500236799,GB
+2500236800,2500236837,US
2500236838,2500236838,ES
-2500236839,2500237183,GB
-2500237184,2500237311,ES
+2500236839,2500237311,US
2500237312,2500238047,IT
2500238048,2500238055,FR
2500238056,2500238335,IT
@@ -78777,9 +87207,7 @@
2500246016,2500246527,GB
2500246528,2500247551,US
2500247552,2500251647,ES
-2500251648,2500268031,US
-2500268032,2500270079,ES
-2500270080,2500272625,US
+2500251648,2500272625,US
2500272626,2500272626,GB
2500272627,2500273663,US
2500273664,2500273919,GB
@@ -78805,10 +87233,9 @@
2500393216,2500393983,US
2500393984,2500394239,GB
2500394240,2500530175,US
-2500530176,2500531199,ES
-2500531200,2500531783,AT
+2500530176,2500531783,ES
2500531784,2500531791,GB
-2500531792,2500532223,AT
+2500531792,2500532223,ES
2500532224,2500532749,US
2500532750,2500532750,GR
2500532751,2500535295,US
@@ -78848,8 +87275,7 @@
2500562944,2500564991,ES
2500564992,2500567039,US
2500567040,2500569087,GB
-2500569088,2500570111,BE
-2500570112,2500571135,GB
+2500569088,2500571135,BE
2500571136,2500591615,US
2500591616,2500593663,GB
2500593664,2500596223,US
@@ -78918,14 +87344,12 @@
2500743224,2500744239,NL
2500744240,2500744247,ES
2500744248,2500745215,NL
-2500745216,2500746239,DE
-2500746240,2500747263,GB
+2500745216,2500746767,DE
+2500746768,2500746775,GB
+2500746776,2500747263,DE
2500747264,2500748543,US
2500748544,2500748799,ES
-2500748800,2500749311,DE
-2500749312,2500753407,US
-2500753408,2500755455,FR
-2500755456,2500756647,US
+2500748800,2500756647,US
2500756648,2500756655,IT
2500756656,2500756879,US
2500756880,2500756887,IT
@@ -78935,10 +87359,10 @@
2500759464,2500759467,NL
2500759468,2500759551,US
2500759552,2500761599,GB
-2500761600,2500762623,FR
-2500762624,2500763199,US
+2500761600,2500763199,FR
2500763200,2500763207,DE
-2500763208,2500773023,US
+2500763208,2500763647,FR
+2500763648,2500773023,US
2500773024,2500773031,GB
2500773032,2500773223,US
2500773224,2500773231,GB
@@ -78984,15 +87408,11 @@
2502174208,2502180863,US
2502180864,2502181119,FI
2502181120,2502221823,US
-2502221824,2502225919,ES
-2502225920,2502226943,US
-2502226944,2502230015,ES
+2502221824,2502230015,ES
2502230016,2503016447,US
2503016448,2503147519,IL
2503147520,2503344127,US
-2503344128,2503344383,AF
-2503344384,2503344639,DE
-2503344640,2503376895,AF
+2503344128,2503376895,AF
2503376896,2503409663,JP
2503409664,2503475199,US
2503475200,2503477487,CA
@@ -79049,8 +87469,8 @@
2504491008,2504499199,IT
2504499200,2504499967,IE
2504499968,2504501247,US
-2504501248,2504502015,ES
-2504502016,2504502271,US
+2504501248,2504501759,ES
+2504501760,2504502271,GB
2504502272,2504502527,ES
2504502528,2504502730,US
2504502731,2504502731,ES
@@ -79058,7 +87478,9 @@
2504502784,2504503295,ES
2504503296,2504517631,US
2504517632,2504518655,FR
-2504518656,2504918642,US
+2504518656,2504519167,US
+2504519168,2504519423,ES
+2504519424,2504918642,US
2504918643,2504918643,IL
2504918644,2504919670,US
2504919671,2504919671,IL
@@ -79129,9 +87551,7 @@
2507183360,2507183615,US
2507210752,2507368447,US
2507368448,2507369471,GB
-2507369472,2507475199,US
-2507475200,2507475455,CA
-2507475456,2507510271,US
+2507369472,2507510271,US
2507510272,2507510527,FR
2507510528,2508062719,US
2508062720,2508064767,CH
@@ -79143,9 +87563,7 @@
2508077056,2508079103,BE
2508079104,2508081151,DE
2508081152,2508081407,NL
-2508081408,2508081445,IL
-2508081446,2508081446,US
-2508081447,2508081663,IL
+2508081408,2508081663,US
2508081664,2508081919,GB
2508081920,2508081920,NL
2508081921,2508082431,GB
@@ -79535,7 +87953,8 @@
2523746304,2523748351,KR
2523748352,2523750399,SG
2523750400,2523758591,HK
-2523758592,2523766783,SG
+2523758592,2523762687,SG
+2523762688,2523766783,HK
2523766784,2523774975,TH
2523774976,2523779071,JP
2523779072,2523791359,KR
@@ -79644,7 +88063,9 @@
2530803712,2530869247,IT
2530869248,2531134463,US
2531134464,2531134719,BR
-2531134720,2531196927,US
+2531134720,2531149055,US
+2531149056,2531149567,BR
+2531149568,2531196927,US
2531196928,2531262463,CN
2531262464,2531459071,US
2531459072,2531524607,SE
@@ -79847,7 +88268,9 @@
2538634880,2538635007,GB
2538635008,2538644015,FR
2538644016,2538644039,ES
-2538644040,2538644927,FR
+2538644040,2538644107,FR
+2538644108,2538644111,ES
+2538644112,2538644927,FR
2538644928,2538644991,IE
2538644992,2538645607,FR
2538645608,2538645615,PL
@@ -79855,7 +88278,9 @@
2538645696,2538645727,CZ
2538645728,2538645775,FR
2538645776,2538645783,ES
-2538645784,2538645855,FR
+2538645784,2538645803,FR
+2538645804,2538645807,BE
+2538645808,2538645855,FR
2538645856,2538645871,ES
2538645872,2538646063,FR
2538646064,2538646079,PT
@@ -79904,7 +88329,9 @@
2538651280,2538651283,DE
2538651284,2538651967,FR
2538651968,2538651999,PT
-2538652000,2538652727,FR
+2538652000,2538652495,FR
+2538652496,2538652499,DE
+2538652500,2538652727,FR
2538652728,2538652731,DE
2538652732,2538652883,FR
2538652884,2538652887,DE
@@ -79912,7 +88339,8 @@
2538652992,2538653055,DE
2538653056,2538653327,FR
2538653328,2538653331,CZ
-2538653332,2538653379,FR
+2538653332,2538653335,NL
+2538653336,2538653379,FR
2538653380,2538653383,DE
2538653384,2538653387,ES
2538653388,2538653927,FR
@@ -79923,7 +88351,9 @@
2538655264,2538655279,DE
2538655280,2538656335,FR
2538656336,2538656351,GB
-2538656352,2538656959,FR
+2538656352,2538656423,FR
+2538656424,2538656427,PL
+2538656428,2538656959,FR
2538656960,2538656975,ES
2538656976,2538657135,FR
2538657136,2538657139,RO
@@ -80035,9 +88465,7 @@
2542993408,2543583231,US
2543583232,2543648767,SE
2543648768,2543714303,NO
-2543779840,2544228863,US
-2544228864,2544229119,DE
-2544229120,2544500735,US
+2543779840,2544500735,US
2544500736,2544566271,GB
2544566272,2544631807,US
2544697344,2544762879,SA
@@ -80061,7 +88489,7 @@
2547318784,2547515391,US
2547515392,2547516415,RU
2547516416,2547517439,SE
-2547523584,2547524607,DE
+2547519488,2547524607,DE
2547524608,2547525375,IR
2547525376,2547527679,DE
2547527680,2547535871,GB
@@ -80092,11 +88520,7 @@
2548848640,2548848895,UA
2548848896,2548858879,RU
2548858880,2548867071,NL
-2548867072,2548868607,IQ
-2548868608,2548868863,US
-2548868864,2548870143,IQ
-2548870144,2548871167,SA
-2548871168,2548875263,IQ
+2548867072,2548875263,IQ
2548875264,2548877311,KZ
2548877312,2548879359,SE
2548879360,2548883455,GB
@@ -80204,8 +88628,8 @@
2554462208,2554527743,HU
2554527744,2554789887,US
2554789888,2554855423,GB
-2554855424,2554888831,US
-2554888832,2554888959,GB
+2554855424,2554888703,US
+2554888704,2554888959,GB
2554888960,2554920959,US
2554920960,2554986495,DK
2554986496,2555052031,CL
@@ -80220,6 +88644,72 @@
2555641856,2555707391,BR
2555707392,2555903999,US
2555904000,2555969535,CH
+2555969536,2555970559,LT
+2555970560,2555971583,NL
+2555971584,2555972607,ZA
+2555972608,2555973631,IR
+2555973632,2555974655,SK
+2555974656,2555975679,UA
+2555975680,2555976703,GB
+2555976704,2555977727,LT
+2555977728,2555978751,ES
+2555978752,2555979775,TR
+2555979776,2555980799,PS
+2555980800,2555981823,IR
+2555981824,2555982847,GB
+2555982848,2555983871,PL
+2555983872,2555984895,ES
+2555984896,2555985919,UA
+2555985920,2555986943,GB
+2555986944,2555987967,IT
+2555987968,2555988991,CZ
+2555988992,2555990015,LT
+2555990016,2555991039,CH
+2555991040,2555992063,NL
+2555992064,2555994111,DE
+2555994112,2555995135,FR
+2555995136,2555996159,ES
+2555996160,2555997183,DE
+2555997184,2555998207,RU
+2555998208,2555999231,FR
+2555999232,2556000255,GR
+2556000256,2556002303,DE
+2556002304,2556003327,US
+2556003328,2556004351,RU
+2556004352,2556005375,ES
+2556005376,2556006399,FR
+2556006400,2556007423,ES
+2556007424,2556008447,FR
+2556008448,2556009471,IR
+2556009472,2556010495,PS
+2556010496,2556010751,RS
+2556010752,2556011007,RO
+2556011008,2556011263,CH
+2556011264,2556011519,DE
+2556011520,2556012543,ES
+2556012544,2556013567,CZ
+2556013568,2556014591,FR
+2556014592,2556015615,DE
+2556015616,2556016639,ES
+2556016640,2556017663,NO
+2556017664,2556018687,FR
+2556018688,2556019711,BY
+2556019712,2556020101,GB
+2556020102,2556020102,NO
+2556020103,2556022783,GB
+2556022784,2556023295,US
+2556023296,2556023551,GB
+2556023552,2556023807,NL
+2556023808,2556024831,RO
+2556024832,2556025855,RU
+2556025856,2556027903,AT
+2556027904,2556028927,CZ
+2556028928,2556029951,SI
+2556029952,2556030975,DE
+2556030976,2556031999,ES
+2556032000,2556033023,DE
+2556033024,2556034047,LT
+2556034048,2556035071,DE
2556035072,2556100607,NO
2556100608,2556166143,AU
2556166144,2556231679,BR
@@ -80301,13 +88791,48 @@
2561409024,2561671167,CL
2561671168,2562867199,US
2562867200,2562868223,DE
-2562868224,2562956287,US
+2562868224,2562921983,US
+2562921984,2562922239,IT
+2562922240,2562923263,US
+2562923264,2562923519,CL
+2562923520,2562940927,US
+2562940928,2562941951,GB
+2562941952,2562942975,DE
+2562942976,2562943999,NL
+2562944000,2562945023,US
+2562945024,2562946047,JP
+2562946048,2562951167,US
+2562951168,2562951679,JP
+2562951680,2562952191,NL
+2562952192,2562952703,GB
+2562952704,2562953215,DE
+2562953216,2562953471,AE
+2562953472,2562954495,US
+2562954496,2562954751,MX
+2562954752,2562956287,US
2562956288,2562956799,ZA
-2562956800,2562967039,US
-2562967040,2562968063,SG
-2562968064,2562978303,US
-2562978304,2562978815,AT
-2562978816,2563244031,US
+2562956800,2562963967,US
+2562963968,2562964991,HK
+2562964992,2562966527,US
+2562966528,2562968063,SG
+2562968064,2562968575,US
+2562968576,2562969087,IN
+2562969088,2562969599,BR
+2562969600,2562970623,US
+2562970624,2562971647,BR
+2562971648,2562973695,US
+2562973696,2562974719,AU
+2562974720,2562975231,BR
+2562975232,2562977791,US
+2562977792,2562978815,AT
+2562978816,2562979839,SE
+2562979840,2562981375,US
+2562981376,2562981887,TH
+2562981888,2563205119,US
+2563205120,2563205631,TW
+2563205632,2563205887,US
+2563205888,2563206399,IT
+2563206400,2563244031,US
2563244032,2563637247,CO
2563637248,2563768319,CU
2563768320,2564947967,US
@@ -80337,7 +88862,9 @@
2568093696,2568159231,US
2568159232,2568224767,PL
2568224768,2568290303,SG
-2568290304,2569142271,US
+2568290304,2568868667,US
+2568868668,2568868668,DE
+2568868669,2569142271,US
2569142272,2569404415,CN
2569404416,2569797631,US
2569797632,2569863167,NO
@@ -80422,7 +88949,12 @@
2572996608,2572997631,GB
2572997632,2573000703,US
2573000704,2573008895,FR
-2573008896,2573336575,DE
+2573008896,2573078527,DE
+2573078528,2573082623,LU
+2573082624,2573088767,DE
+2573088768,2573090815,GI
+2573090816,2573107199,SA
+2573107200,2573336575,DE
2573353984,2573354239,BE
2573369344,2573402111,DE
2573402112,2573467647,CN
@@ -80444,13 +88976,13 @@
2583582208,2583582463,HK
2583582464,2583589103,JP
2583589104,2583589111,SG
-2583589112,2583609855,JP
-2583609856,2583609903,IT
-2583609904,2583609919,JP
-2583609920,2583610015,IT
-2583610016,2583610031,JP
-2583610032,2583610111,IT
-2583610112,2583691263,JP
+2583589112,2583609934,JP
+2583609935,2583609935,IT
+2583609936,2583614547,JP
+2583614548,2583614548,IT
+2583614549,2583615644,JP
+2583615645,2583615645,IT
+2583615646,2583691263,JP
2583691264,2583695359,ZA
2583695360,2583697407,BW
2583697408,2583699455,CI
@@ -80641,7 +89173,9 @@
2584772450,2584775423,US
2584775424,2584775679,KE
2584775680,2584775935,MA
-2584775936,2584778751,US
+2584775936,2584776447,US
+2584776448,2584776703,NL
+2584776704,2584778751,US
2584778752,2584779775,DE
2584779776,2584780031,NL
2584780032,2584780287,US
@@ -80667,13 +89201,29 @@
2584802304,2584802559,ZA
2584802560,2584802815,US
2584802816,2584803071,ZA
-2584803072,2584887807,US
+2584803072,2584803327,US
+2584803328,2584803839,ZA
+2584803840,2584804095,US
+2584804096,2584804367,ZA
+2584804368,2584804383,US
+2584804384,2584804751,ZA
+2584804752,2584804767,US
+2584804768,2584804799,ZA
+2584804800,2584804831,US
+2584804832,2584804847,ZA
+2584804848,2584804863,US
+2584804864,2584805375,ZA
+2584805376,2584887807,US
2584887808,2584888063,JP
2584888064,2585001983,US
2585001984,2585067519,CA
-2585067520,2585079295,US
+2585067520,2585077759,US
+2585077760,2585078783,GB
+2585078784,2585079295,US
2585079296,2585079423,GB
-2585079424,2585330440,US
+2585079424,2585092607,US
+2585092608,2585093119,NL
+2585093120,2585330440,US
2585330441,2585330442,SI
2585330443,2585330468,US
2585330469,2585330470,SI
@@ -80791,8 +89341,8 @@
2587035648,2587049983,US
2587049984,2587052031,GB
2587052032,2587066367,US
-2587066368,2587069439,GB
-2587069440,2587070463,US
+2587066368,2587068479,GB
+2587068480,2587070463,US
2587070464,2587076607,GB
2587076608,2587080703,US
2587080704,2587082751,GB
@@ -80813,14 +89363,16 @@
2587249419,2587285503,US
2587285504,2587285759,ES
2587285760,2587286015,US
-2587286016,2587287551,ES
+2587286016,2587286527,ES
+2587286528,2587287039,US
+2587287040,2587287551,ES
2587287552,2587361791,US
2587361792,2587362047,MD
2587362048,2587377663,US
2587377664,2587379711,IT
2587379712,2587383807,US
-2587383808,2587385855,FR
-2587385856,2587394047,US
+2587383808,2587384063,FR
+2587384064,2587394047,US
2587394048,2587402239,ES
2587402240,2587410431,US
2587410432,2587414527,IT
@@ -80828,9 +89380,7 @@
2587427840,2587430911,GR
2587430912,2587443199,US
2587443200,2587447295,CH
-2587447296,2587464447,US
-2587464448,2587464703,CY
-2587464704,2587476760,US
+2587447296,2587476760,US
2587476761,2587476761,LB
2587476762,2587479119,US
2587479120,2587479120,LB
@@ -80838,10 +89388,8 @@
2587481970,2587481970,LB
2587481971,2587484159,US
2587484160,2587486207,GB
-2587486208,2587489952,US
-2587489953,2587489953,GB
-2587489954,2587490303,US
-2587490304,2587492351,GB
+2587486208,2587488255,US
+2587488256,2587492351,GB
2587492352,2587497471,ES
2587497472,2587498495,US
2587498496,2587499007,ES
@@ -80869,8 +89417,8 @@
2587632128,2587639807,US
2587639808,2587641855,GB
2587641856,2587647999,US
-2587648000,2587650047,ES
-2587650048,2587650815,US
+2587648000,2587649023,ES
+2587649024,2587650815,US
2587650816,2587651071,ES
2587651072,2587672831,US
2587672832,2587673087,IT
@@ -80917,7 +89465,9 @@
2587762688,2587764735,ES
2587764736,2587787263,US
2587787264,2587787775,GB
-2587787776,2587802623,US
+2587787776,2587795455,US
+2587795456,2587799551,GB
+2587799552,2587802623,US
2587802624,2587803647,GB
2587803648,2587803903,IT
2587803904,2587926527,US
@@ -81068,7 +89618,14 @@
2588934144,2588999679,ZA
2588999680,2589131007,US
2589131008,2589131263,NL
-2589131264,2589234175,US
+2589131264,2589131519,US
+2589131520,2589131775,IN
+2589131776,2589132031,NP
+2589132032,2589132287,US
+2589132288,2589132543,IT
+2589132544,2589132799,ES
+2589132800,2589133823,DE
+2589133824,2589234175,US
2589234176,2589234431,AT
2589234432,2589234687,BD
2589234688,2589234943,BR
@@ -81110,7 +89667,9 @@
2589270016,2589278207,US
2589278208,2589286399,PK
2589286400,2589286655,PH
-2589286656,2589523967,US
+2589286656,2589367295,US
+2589367296,2589368319,HK
+2589368320,2589523967,US
2589523968,2589589503,HK
2589589504,2589655039,US
2589655040,2589786111,HK
@@ -81125,7 +89684,11 @@
2589880834,2589880834,HK
2589880835,2589880893,US
2589880894,2589880894,HK
-2589880895,2589982719,US
+2589880895,2589925887,US
+2589925888,2589926143,FR
+2589926144,2589926911,US
+2589926912,2589927167,FR
+2589927168,2589982719,US
2589982720,2590507007,SD
2590507008,2591031295,TN
2591031296,2591096831,GA
@@ -81201,7 +89764,9 @@
2595225600,2596274175,EG
2596274176,2597322751,ZA
2597322752,2597388287,US
-2597388288,2597454079,HK
+2597388288,2597445631,HK
+2597445632,2597445887,US
+2597445888,2597454079,HK
2597454080,2597454335,JP
2597454336,2597584895,HK
2597584896,2597650431,US
@@ -81267,11 +89832,7 @@
2604007424,2604072959,ES
2604072960,2604138495,NO
2604138496,2604204031,DE
-2604204032,2604242943,US
-2604242944,2604243711,SG
-2604243712,2604243967,US
-2604243968,2604244991,SG
-2604244992,2604335103,US
+2604204032,2604335103,US
2604335104,2604400639,NZ
2604400640,2604466175,AU
2604466176,2604648447,US
@@ -81321,7 +89882,9 @@
2609250304,2609381375,US
2609381376,2609446911,GB
2609446912,2609512447,DK
-2609512448,2609643519,US
+2609512448,2609545215,US
+2609545216,2609547263,CA
+2609547264,2609643519,US
2609643520,2609708031,FR
2609708032,2609708839,SG
2609708840,2609708843,FR
@@ -81491,8 +90054,10 @@
2617267200,2617268223,ZA
2617268224,2617269247,CD
2617269248,2617272319,ZA
-2617272320,2617273343,US
-2617273344,2617278463,ZA
+2617272320,2617274367,US
+2617274368,2617275391,ZA
+2617275392,2617276415,US
+2617276416,2617278463,ZA
2617278464,2617286655,GH
2617286656,2617296383,ZA
2617296384,2617296639,CD
@@ -81533,7 +90098,9 @@
2618949632,2619080703,US
2619080704,2619146239,FR
2619146240,2619277311,US
-2619277312,2619342847,BN
+2619277312,2619327743,BN
+2619327744,2619327999,MY
+2619328000,2619342847,BN
2619342848,2619473919,US
2619473920,2619539455,CA
2619539456,2619604991,ES
@@ -81615,14 +90182,17 @@
2621936896,2621937151,SG
2621937152,2622685183,US
2622685184,2622750719,NL
-2622750720,2623602687,US
+2622750720,2623389695,US
+2623389696,2623391743,MX
+2623391744,2623602687,US
2623602688,2623668223,CL
2623668224,2624192511,US
2624192512,2624258047,CH
2624258048,2624265727,US
2624265728,2624266239,SG
-2624266240,2624266751,AU
-2624266752,2624269313,US
+2624266240,2624266561,US
+2624266562,2624266562,AU
+2624266563,2624269313,US
2624269314,2624269314,AU
2624269315,2624269317,US
2624269318,2624269318,AU
@@ -81691,8 +90261,7 @@
2624293180,2624293375,SG
2624293376,2624293385,US
2624293386,2624293386,SG
-2624293387,2624296959,US
-2624296960,2624297983,ID
+2624293387,2624297983,US
2624297984,2624297999,SG
2624298000,2624298003,CN
2624298004,2624298007,HK
@@ -81730,8 +90299,7 @@
2624298292,2624298295,PH
2624298296,2624298299,TH
2624298300,2624298495,SG
-2624298496,2624299007,ID
-2624299008,2624302081,US
+2624298496,2624302081,US
2624302082,2624302082,AU
2624302083,2624302085,US
2624302086,2624302086,AU
@@ -81762,9 +90330,7 @@
2625044480,2625134559,US
2625134560,2625134591,UA
2625134592,2625961983,US
-2625961984,2625974271,LU
-2625974272,2625976319,FR
-2625976320,2626027519,LU
+2625961984,2626027519,LU
2626027520,2626093055,US
2626093056,2626158591,CH
2626158592,2626879487,US
@@ -81985,7 +90551,9 @@
2637746824,2637746831,KR
2637746832,2637746839,US
2637746840,2637746847,KR
-2637746848,2637746887,US
+2637746848,2637746871,US
+2637746872,2637746879,JP
+2637746880,2637746887,US
2637746888,2637746895,JP
2637746896,2637756415,US
2637756416,2637757439,NL
@@ -82050,8 +90618,7 @@
2640417792,2640418815,CH
2640418816,2640420863,NO
2640420864,2640421631,IT
-2640421632,2640421887,DE
-2640421888,2640422911,SE
+2640421632,2640422911,DE
2640422912,2640423935,NL
2640423936,2640429055,ES
2640429056,2640445439,NL
@@ -82106,9 +90673,11 @@
2641887232,2641928191,JP
2641928192,2641936383,SG
2641936384,2641944575,US
-2641944576,2641946625,JP
+2641944576,2641946623,GB
+2641946624,2641946625,JP
2641946626,2641946626,HK
-2641946627,2641948671,JP
+2641946627,2641947647,JP
+2641947648,2641948671,GB
2641948672,2641950719,SG
2641950720,2641952767,HK
2641952768,2642018303,US
@@ -82131,7 +90700,9 @@
2642767872,2642771967,DE
2642771968,2642776063,NL
2642776064,2642778111,JP
-2642778112,2642935807,US
+2642778112,2642790399,US
+2642790400,2642792447,DE
+2642792448,2642935807,US
2642935808,2643001343,FR
2643001344,2643066879,US
2643066880,2643132415,IT
@@ -82156,6 +90727,21 @@
2644934656,2644936703,AR
2644936704,2644967423,US
2644967680,2644968191,IN
+2644969984,2644970239,BZ
+2644970240,2644970495,CR
+2644970496,2644970751,EC
+2644970752,2644971007,SV
+2644971008,2644971263,GT
+2644971264,2644971519,HN
+2644971520,2644971775,PA
+2644971776,2644972031,BO
+2644972032,2644972287,CL
+2644972288,2644972543,GF
+2644972544,2644972799,GY
+2644972800,2644973055,PY
+2644973056,2644973311,PE
+2644973312,2644973567,SR
+2644973568,2644973823,UY
2645032960,2645098495,CH
2645098496,2645164031,FR
2645164032,2645229567,US
@@ -82428,9 +91014,15 @@
2649104384,2649108479,SG
2649108480,2649113599,US
2649113600,2649114623,CA
-2649114624,2649120767,US
+2649114624,2649115647,US
+2649115648,2649116671,DE
+2649116672,2649120767,US
2649120768,2649128959,DE
-2649128960,2649489407,US
+2649128960,2649145343,US
+2649145344,2649146367,SG
+2649146368,2649161727,US
+2649161728,2649227263,GB
+2649227264,2649489407,US
2649489408,2649554943,GB
2649554944,2649620479,NO
2649620480,2649948159,US
@@ -82448,9 +91040,13 @@
2650734592,2650800127,CN
2650800128,2652504063,US
2652504064,2652506111,CA
-2652506112,2652520879,US
-2652520880,2652520895,CA
-2652520896,2652528639,US
+2652506112,2652520447,US
+2652520448,2652520863,CA
+2652520864,2652520879,US
+2652520880,2652520901,CA
+2652520902,2652520902,US
+2652520903,2652522495,CA
+2652522496,2652528639,US
2652528640,2652528895,AR
2652528896,2652537599,US
2652537600,2652537607,GB
@@ -82458,17 +91054,11 @@
2652537616,2652537855,GB
2652537856,2652541183,US
2652541184,2652541439,NL
-2652541440,2652557567,US
-2652557568,2652557575,SG
+2652541440,2652557311,US
+2652557312,2652557575,SG
2652557576,2652557583,US
-2652557584,2652557823,SG
-2652557824,2652561407,US
-2652561408,2652563455,AU
-2652563456,2652692479,US
-2652692480,2652692973,CA
-2652692974,2652692974,US
-2652692975,2652694527,CA
-2652694528,2653159423,US
+2652557584,2652559359,SG
+2652559360,2653159423,US
2653159424,2653421567,NO
2653421568,2653487103,AU
2653487104,2653552639,GB
@@ -82591,16 +91181,18 @@
2658439368,2658439368,BR
2658439369,2658454491,US
2658454492,2658454492,IN
-2658454493,2658459355,US
+2658454493,2658458623,US
+2658458624,2658459355,MY
2658459356,2658459356,IN
-2658459357,2658471935,US
-2658471936,2658473983,AU
-2658473984,2658598911,US
+2658459357,2658459647,MY
+2658459648,2658598911,US
2658598912,2658664447,GB
2658664448,2658926591,US
2658926592,2659057663,GB
2659057664,2659123199,SE
-2659123200,2659180543,FI
+2659123200,2659164159,FI
+2659164160,2659165183,NL
+2659165184,2659180543,FI
2659180544,2659181823,NL
2659181824,2659182079,BE
2659182080,2659184639,NL
@@ -82641,9 +91233,9 @@
2661548032,2661679103,US
2661679104,2661885951,LU
2661885952,2661886207,BE
-2661886208,2661914111,LU
-2661914112,2661914367,BE
-2661914368,2661941247,LU
+2661886208,2661912575,LU
+2661912576,2661914623,BE
+2661914624,2661941247,LU
2661941248,2662006783,CL
2662006784,2662072319,US
2662072320,2662137855,ES
@@ -82708,20 +91300,19 @@
2665545728,2665611263,DE
2665611264,2665676799,CH
2665676800,2665742335,ES
-2665742336,2665783295,US
-2665783296,2665785343,GB
-2665785344,2665873407,US
+2665742336,2665873407,US
2665873408,2665938943,GB
2665938944,2666004479,FR
2666004480,2666070015,CH
2666070016,2666107391,FI
2666107392,2666107399,DK
-2666107400,2666133007,FI
+2666107400,2666132991,FI
+2666132992,2666132999,DK
+2666133000,2666133007,FI
2666133008,2666133015,NO
2666133016,2666133023,PL
2666133024,2666133031,SE
-2666133032,2666133247,FI
-2666133248,2666133255,DK
+2666133032,2666133255,DK
2666133256,2666133263,FI
2666133264,2666133271,NO
2666133272,2666133279,PL
@@ -82767,7 +91358,11 @@
2667536896,2667537087,AT
2667537088,2667537119,FR
2667537120,2667537151,AT
-2667537152,2667544575,FR
+2667537152,2667537215,FR
+2667537216,2667537231,AT
+2667537232,2667537239,FR
+2667537240,2667537279,AT
+2667537280,2667544575,FR
2667544576,2667560959,RU
2667560960,2667565055,IT
2667565056,2667565311,HK
@@ -83060,10 +91655,15 @@
2676424704,2676457471,US
2676457472,2676465663,DE
2676465664,2676621311,US
-2676621312,2676626431,HK
-2676626432,2676627455,SG
-2676627456,2676629503,CN
-2676629504,2676686847,SG
+2676621312,2676625407,HK
+2676625408,2676629503,CN
+2676629504,2676637695,HK
+2676637696,2676639743,SG
+2676639744,2676640767,HK
+2676640768,2676662271,SG
+2676662272,2676670463,ZA
+2676670464,2676678655,RU
+2676678656,2676686847,TH
2676686848,2677014527,US
2677014528,2677080063,CH
2677080064,2677145599,US
@@ -83080,8 +91680,8 @@
2677636096,2677639167,US
2677639168,2677639679,CA
2677639680,2677640959,US
-2677640960,2677641727,CA
-2677641728,2677642239,US
+2677640960,2677641471,CA
+2677641472,2677642239,US
2677642240,2677642495,ES
2677642496,2677642751,CA
2677642752,2677643007,SE
@@ -83102,7 +91702,9 @@
2677659904,2677660159,IN
2677660160,2677669887,US
2677669888,2677735423,DE
-2677735424,2677800959,US
+2677735424,2677799935,US
+2677799936,2677800447,MX
+2677800448,2677800959,US
2677800960,2677866495,CH
2677866496,2677997567,US
2677997568,2678063103,CA
@@ -83123,9 +91725,7 @@
2678886400,2678886655,GB
2678886656,2678901759,US
2678901760,2678902015,NZ
-2678902016,2678911487,US
-2678911488,2678911743,AU
-2678911744,2678915071,US
+2678902016,2678915071,US
2678915072,2678980607,FR
2678980608,2679046143,US
2679046144,2679111679,CA
@@ -83219,9 +91819,7 @@
2679431168,2679439359,FR
2679439360,2679515391,US
2679515392,2679515903,GB
-2679515904,2679523327,US
-2679523328,2679525375,GB
-2679525376,2679535615,US
+2679515904,2679535615,US
2679535616,2679537663,GB
2679537664,2680029183,US
2680029184,2680094719,SE
@@ -83272,7 +91870,9 @@
2682014464,2682014719,GB
2682014720,2682014725,US
2682014726,2682014727,SG
-2682014728,2682055167,US
+2682014728,2682014975,US
+2682014976,2682015231,PH
+2682015232,2682055167,US
2682055168,2682055423,SG
2682055424,2682257407,US
2682257408,2682322943,UA
@@ -83291,7 +91891,8 @@
2683371520,2683437055,CH
2683437056,2683439103,US
2683439104,2683441151,GB
-2683441152,2683453439,US
+2683441152,2683445247,JP
+2683445248,2683453439,US
2683453440,2683469823,GB
2683469824,2683568127,US
2683568128,2683633663,GB
@@ -83467,15 +92068,17 @@
2689593344,2689593599,GB
2689593600,2689597439,US
2689597440,2689662975,IT
-2689662976,2689801904,US
+2689662976,2689800191,US
+2689800192,2689801727,DE
+2689801728,2689801904,US
2689801905,2689801905,DE
-2689801906,2689802751,US
+2689801906,2689801983,US
+2689801984,2689802239,DE
+2689802240,2689802751,US
2689802752,2689803263,TR
-2689803264,2689818623,US
-2689818624,2689819135,IN
-2689819136,2689835007,US
-2689835008,2689835263,AU
-2689835264,2689835519,US
+2689803264,2689818879,US
+2689818880,2689819135,IN
+2689819136,2689835519,US
2689835520,2689835775,AU
2689835776,2689925119,US
2689925120,2689990655,CH
@@ -83536,7 +92139,11 @@
2692008960,2692011007,BR
2692011008,2692012031,FR
2692012032,2692016127,AU
-2692016128,2692171775,ZA
+2692016128,2692016383,US
+2692016384,2692016639,ZA
+2692016640,2692017151,US
+2692017152,2692022271,CA
+2692022272,2692171775,ZA
2692171776,2692173567,SC
2692173568,2692173823,US
2692173824,2692175871,ZA
@@ -83582,7 +92189,8 @@
2696151040,2696216575,IT
2696216576,2696282111,ZA
2696282112,2696413183,GM
-2696413184,2696478719,US
+2696413184,2696445951,PK
+2696445952,2696478719,US
2696478720,2696609791,JP
2696675328,2697594879,JP
2697594880,2697596927,IN
@@ -83650,7 +92258,9 @@
2699542528,2699624447,US
2699624448,2699689983,JP
2699755520,2699821055,JP
-2699886592,2699955199,JP
+2699886592,2699952127,JP
+2699952128,2699952383,BD
+2699952384,2699955199,JP
2699955200,2699956223,TH
2699956224,2699957247,BD
2699957248,2699957503,JP
@@ -83842,26 +92452,24 @@
2708865024,2708930559,JP
2708930560,2709127167,US
2709127168,2709192703,KR
-2709192704,2709209087,ZA
+2709192704,2709194751,KY
+2709194752,2709200895,US
+2709200896,2709209087,ZA
2709209088,2709225471,OM
2709225472,2709225727,ES
2709225728,2709225983,ZA
2709225984,2709226239,ES
-2709226240,2709240831,ZA
-2709240832,2709241087,DE
-2709241088,2709241343,ZA
-2709241344,2709241599,DE
-2709241600,2709242111,ZA
+2709226240,2709242111,ZA
2709242112,2709242367,US
-2709242368,2709242623,DE
+2709242368,2709242623,ZA
2709242624,2709242879,US
-2709242880,2709243135,DE
+2709242880,2709243135,ZA
2709243136,2709243391,US
2709243392,2709243647,ZA
2709243648,2709243903,US
2709243904,2709244159,ZA
2709244160,2709244415,US
-2709244416,2709244671,DE
+2709244416,2709244671,ZA
2709244672,2709244927,US
2709244928,2709245183,ZA
2709245184,2709245439,US
@@ -83869,33 +92477,20 @@
2709245696,2709245951,US
2709245952,2709246207,ZA
2709246208,2709246463,US
-2709246464,2709246719,DE
-2709246720,2709247231,ZA
+2709246464,2709247231,ZA
2709247232,2709247487,MY
2709247488,2709247743,ZA
2709247744,2709247999,US
2709248000,2709248255,ZA
2709248256,2709248511,US
-2709248512,2709249023,ZA
-2709249024,2709249279,DE
-2709249280,2709250047,ZA
-2709250048,2709250303,DE
-2709250304,2709251583,ZA
-2709251584,2709251839,DE
-2709251840,2709252863,ZA
-2709252864,2709253375,DE
-2709253376,2709254655,ZA
-2709254656,2709254911,DE
-2709254912,2709255679,ZA
-2709255680,2709255935,DE
-2709255936,2709257215,ZA
-2709257216,2709257471,DE
-2709257472,2709258239,ZA
+2709248512,2709258239,ZA
2709258240,2709389311,US
2709389312,2709454847,SG
2709454848,2709593599,US
2709593600,2709593855,CA
-2709593856,2709601279,US
+2709593856,2709597014,US
+2709597015,2709597015,JP
+2709597016,2709601279,US
2709601280,2709601311,CA
2709601312,2709601343,NL
2709601344,2709601407,US
@@ -83937,9 +92532,7 @@
2711371968,2711371983,NL
2711371984,2711486463,US
2711486464,2711551999,NL
-2711552000,2712535039,US
-2712535040,2712535551,CA
-2712535552,2713190399,US
+2711552000,2713190399,US
2713190400,2713255935,CA
2713255936,2713387007,US
2713387008,2713452543,CA
@@ -83948,7 +92541,9 @@
2713583616,2713649151,AR
2713649152,2713947395,US
2713947396,2713947396,DE
-2713947397,2713976831,US
+2713947397,2713947647,US
+2713947648,2713947903,CL
+2713947904,2713976831,US
2713976832,2714042367,VE
2714042368,2714238975,US
2714238976,2714304511,TH
@@ -84024,7 +92619,9 @@
2716794880,2717253631,US
2717253632,2717319167,TH
2717319168,2717384703,US
-2717450240,2717581311,US
+2717450240,2717499391,US
+2717499392,2717500415,PH
+2717500416,2717581311,US
2717581312,2717646847,SA
2717646848,2717712383,KW
2717712384,2717843455,US
@@ -84067,7 +92664,8 @@
2721972224,2721979903,RU
2721979904,2721992703,SG
2721992704,2721996799,RU
-2721996800,2722037759,SG
+2721996800,2722000895,DE
+2722000896,2722037759,SG
2722037760,2722496511,US
2722496512,2722562047,CA
2722562048,2722693119,US
@@ -84112,7 +92710,9 @@
2724304712,2724790271,US
2724790272,2724855807,CN
2724855808,2724921343,CA
-2724921344,2725249023,US
+2724921344,2724970495,US
+2724970496,2724972543,BE
+2724972544,2725249023,US
2725249024,2725314559,NZ
2725314560,2725904383,US
2725904384,2725969919,VE
@@ -84184,7 +92784,8 @@
2728324096,2728325119,FI
2728325120,2728326143,TW
2728326144,2728327167,US
-2728327168,2728328191,UA
+2728327168,2728327679,UA
+2728327680,2728328191,TR
2728328192,2728329215,US
2728394752,2731543551,US
2731543552,2731544575,CA
@@ -84243,8 +92844,7 @@
2731801600,2731804671,US
2731804672,2731805695,CA
2731805696,2731805951,TC
-2731805952,2731806207,LC
-2731806208,2731806463,AG
+2731805952,2731806463,BB
2731806464,2731806719,VG
2731806720,2731807743,US
2731807744,2731808767,CA
@@ -84304,7 +92904,9 @@
2732132352,2732136447,US
2732136448,2732137215,CA
2732137216,2732137471,DE
-2732137472,2732138239,CA
+2732137472,2732137727,CA
+2732137728,2732137983,US
+2732137984,2732138239,CA
2732138240,2732138495,DE
2732138496,2732145663,US
2732145664,2732146687,CA
@@ -84368,8 +92970,9 @@
2732322048,2732322815,CA
2732322816,2732336127,US
2732336128,2732337151,CA
-2732337152,2732349439,US
-2732349440,2732351487,CA
+2732337152,2732349951,US
+2732349952,2732350463,CA
+2732350464,2732351487,US
2732351488,2732353535,PR
2732353536,2732361727,US
2732361728,2732363775,BB
@@ -84535,8 +93138,8 @@
2734209024,2734210047,US
2734211072,2734212095,US
2734212096,2734213119,NL
-2734213120,2734218495,US
-2734218496,2734218751,CA
+2734213120,2734218239,US
+2734218240,2734218751,CA
2734218752,2734224415,US
2734224416,2734224431,GB
2734224432,2734229503,US
@@ -84626,7 +93229,9 @@
2734494720,2734495231,CA
2734495232,2734502911,US
2734502912,2734503935,CA
-2734503936,2734515199,US
+2734503936,2734507775,US
+2734507776,2734508031,CA
+2734508032,2734515199,US
2734515200,2734516223,DM
2734516224,2734522367,US
2734522368,2734523391,CA
@@ -84787,7 +93392,11 @@
2738223104,2738224127,AU
2738224128,2738225151,IN
2738225152,2738683903,JP
-2738749440,2741370879,FR
+2738749440,2739699711,FR
+2739699712,2739732479,DE
+2739732480,2739896319,FR
+2739896320,2739929087,DE
+2739929088,2741370879,FR
2741370880,2741436415,US
2741436416,2742190079,FR
2742190080,2742194175,IN
@@ -84951,7 +93560,8 @@
2747707136,2747712511,US
2747712512,2747716607,FR
2747716608,2747717631,CH
-2747717632,2747727871,US
+2747717632,2747718655,US
+2747718656,2747727871,CA
2747727872,2748055551,ZA
2748055552,2748121087,CN
2748121088,2748317695,US
@@ -84982,7 +93592,9 @@
2750873600,2750939135,CL
2750939136,2751070207,US
2751070208,2751135743,CL
-2751135744,2751397887,US
+2751135744,2751196927,US
+2751196928,2751197183,JP
+2751197184,2751397887,US
2751397888,2751463423,KR
2751463424,2751528959,KZ
2751528960,2751660031,FR
@@ -85144,8 +93756,7 @@
2760119496,2760119499,ES
2760119500,2760119967,FR
2760119968,2760119983,GB
-2760119984,2760119987,NL
-2760119988,2760120063,FR
+2760119984,2760120063,FR
2760120064,2760120319,NL
2760120320,2760120543,FR
2760120544,2760120575,ES
@@ -85173,7 +93784,9 @@
2760131008,2760131071,BE
2760131072,2760131263,FR
2760131264,2760131327,IT
-2760131328,2760132159,FR
+2760131328,2760131967,FR
+2760131968,2760132031,CZ
+2760132032,2760132159,FR
2760132160,2760132223,ES
2760132224,2760132767,FR
2760132768,2760132783,DE
@@ -85302,13 +93915,17 @@
2760154960,2760154975,IT
2760154976,2760155007,PL
2760155008,2760155135,GB
-2760155136,2760159279,FR
+2760155136,2760158535,FR
+2760158536,2760158536,ES
+2760158537,2760159279,FR
2760159280,2760159295,LT
2760159296,2760159423,FR
2760159424,2760159487,DE
2760159488,2760159503,FR
2760159504,2760159519,DE
-2760159520,2760159775,FR
+2760159520,2760159615,FR
+2760159616,2760159743,IE
+2760159744,2760159775,FR
2760159776,2760159807,IT
2760159808,2760159903,FR
2760159904,2760159935,CZ
@@ -85361,7 +93978,9 @@
2760170048,2760170111,FI
2760170112,2760170815,FR
2760170816,2760170847,PT
-2760170848,2760170975,FR
+2760170848,2760170943,FR
+2760170944,2760170959,ES
+2760170960,2760170975,FR
2760170976,2760170991,IT
2760170992,2760171279,FR
2760171280,2760171295,PL
@@ -85420,7 +94039,9 @@
2760899584,2760900607,GB
2760900608,2761031679,US
2761031680,2761424895,ZA
-2761424896,2761949183,US
+2761424896,2761553919,US
+2761553920,2761555967,CA
+2761555968,2761949183,US
2761949184,2761950207,TN
2761950208,2761951231,UG
2761951232,2761952255,LR
@@ -85449,7 +94070,9 @@
2761978880,2761981951,ZA
2761981952,2761982975,NG
2761982976,2761983999,GH
-2761984000,2761985023,KM
+2761984000,2761984127,KM
+2761984128,2761984255,FR
+2761984256,2761985023,KM
2761985024,2761986047,BJ
2761986048,2761987071,LY
2761987072,2761989119,ZA
@@ -85569,7 +94192,9 @@
2773352448,2773417983,RO
2773417984,2773745663,US
2773745664,2773778431,NZ
-2773778432,2773794815,HK
+2773778432,2773787263,HK
+2773787264,2773787391,SG
+2773787392,2773794815,HK
2773794816,2773798911,IN
2773798912,2773803007,US
2773803008,2773803263,GB
@@ -85610,8 +94235,8 @@
2776039424,2776104959,US
2776104960,2776170495,GB
2776170496,2776478719,US
-2776478720,2776478975,SG
-2776478976,2776479999,US
+2776478720,2776479743,SG
+2776479744,2776479999,US
2776480000,2776480511,NL
2776480512,2776480767,US
2776480768,2776481535,GB
@@ -85623,10 +94248,14 @@
2777612288,2778071039,ZA
2778071040,2778333183,US
2778333184,2778398719,CA
-2778398720,2779054079,US
+2778398720,2778471423,US
+2778471424,2778471679,AU
+2778471680,2779054079,US
2779054080,2779119615,ZA
2779119616,2779316223,US
-2779316224,2779381759,RE
+2779316224,2779342212,RE
+2779342213,2779342213,FR
+2779342214,2779381759,RE
2779381760,2779578367,US
2779578368,2779594751,SG
2779594752,2779906047,US
@@ -85661,20 +94290,15 @@
2780925952,2780926207,GB
2780926208,2780926975,US
2780926976,2780927231,GB
-2780927232,2780927743,US
-2780927744,2780927999,GB
-2780928000,2780929023,US
-2780929024,2780929279,GB
-2780929280,2780929535,FR
-2780929536,2780930047,US
-2780930048,2780930559,GB
-2780930560,2780931071,US
+2780927232,2780931071,US
2780931072,2780932095,GB
2780932096,2780932607,US
2780932608,2780933119,GB
2780933120,2780934911,US
2780934912,2780935167,GB
-2780935168,2780954623,US
+2780935168,2780937407,US
+2780937408,2780937415,GB
+2780937416,2780954623,US
2780954624,2781020159,KR
2781020160,2781206527,US
2781206528,2781207551,GB
@@ -85684,7 +94308,9 @@
2781544448,2781614591,US
2781614592,2781615103,MX
2781615104,2781622271,US
-2781622272,2781624319,CA
+2781622272,2781623295,CA
+2781623296,2781623807,US
+2781623808,2781624319,CA
2781624320,2781626367,US
2781626368,2781626879,NL
2781626880,2781627391,IT
@@ -85698,8 +94324,8 @@
2781643776,2781644287,KR
2781644288,2781644799,TW
2781644800,2781645823,IN
-2781645824,2781646847,SG
-2781646848,2781675519,US
+2781645824,2781646335,SG
+2781646336,2781675519,US
2781675520,2781741055,NZ
2781741056,2781937663,US
2781937664,2782003199,TH
@@ -85715,14 +94341,10 @@
2782855168,2782990335,US
2782990336,2782992383,GB
2782992384,2782992895,DE
-2782992896,2782993407,CH
-2782993408,2782993919,NL
-2782993920,2782994431,CH
-2782994432,2782995455,US
+2782992896,2782995455,US
2782995456,2782996479,CA
2782996480,2783002623,US
-2783002624,2783002879,DK
-2783002880,2783003135,US
+2783002624,2783003135,DK
2783003136,2783003647,RU
2783003648,2783003903,SE
2783003904,2783004159,US
@@ -85741,8 +94363,8 @@
2783008768,2783009023,BE
2783009024,2783010889,US
2783010890,2783010890,HK
-2783010891,2783011327,US
-2783011328,2783011839,AU
+2783010891,2783010943,US
+2783010944,2783011839,AU
2783011840,2783012351,JP
2783012352,2783012607,TW
2783012608,2783012863,US
@@ -85800,16 +94422,16 @@
2786066432,2788163583,US
2788163584,2788229119,CA
2788229120,2788261887,US
-2788261888,2788287999,GB
+2788261888,2788265983,GB
+2788265984,2788268031,DE
+2788268032,2788287999,GB
2788288000,2788288255,PL
2788288256,2788289407,GB
2788289408,2788289535,NO
2788289536,2788294655,GB
2788294656,2789113855,US
2789113856,2789146623,CA
-2789146624,2789199871,US
-2789199872,2789201919,GB
-2789201920,2789212159,US
+2789146624,2789212159,US
2789212160,2789277695,AU
2789277696,2789343231,NZ
2789343232,2789933055,US
@@ -85865,9 +94487,9 @@
2803826688,2803892223,US
2803892224,2805465087,CA
2805465088,2805989375,UY
-2805989376,2806012937,US
-2806012938,2806012938,HK
-2806012939,2806644735,US
+2805989376,2806012927,US
+2806012928,2806013951,HK
+2806013952,2806644735,US
2806644736,2806710271,CA
2806710272,2807103487,US
2807103488,2807169023,NL
@@ -85924,7 +94546,9 @@
2807611392,2807824383,US
2807824384,2807889919,CA
2807889920,2808217599,US
-2808217600,2808283135,GB
+2808217600,2808217745,GB
+2808217746,2808217746,US
+2808217747,2808283135,GB
2808283136,2808287231,US
2808287232,2808288255,NL
2808288256,2808290303,US
@@ -85943,7 +94567,9 @@
2808344576,2808348671,DE
2808348672,2808365055,US
2808365056,2808373247,CA
-2808373248,2808374271,CL
+2808373248,2808373759,KR
+2808373760,2808374015,FR
+2808374016,2808374271,IT
2808374272,2808375295,US
2808375296,2808376319,HK
2808376320,2808381439,US
@@ -86101,7 +94727,9 @@
2817933057,2817933058,CA
2817933059,2817933823,US
2817933824,2817934079,CA
-2817934080,2818002943,US
+2817934080,2817985535,US
+2817985536,2817986303,MY
+2817986304,2818002943,US
2818002944,2818003722,GB
2818003723,2818003723,US
2818003724,2818004991,GB
@@ -86149,6 +94777,7 @@
2818225152,2818226175,EC
2818226176,2818228223,BR
2818228224,2818229247,CR
+2818229248,2818229759,CL
2818229760,2818230015,HN
2818230016,2818231295,BR
2818231296,2818232319,PE
@@ -86232,9 +94861,9 @@
2823553024,2823618559,ZA
2823618560,2823684095,PA
2823684096,2823749631,KR
-2823815168,2823815423,JP
+2823815168,2823815423,SG
2823815424,2823815679,RU
-2823815680,2823815935,AU
+2823815680,2823815935,US
2823815936,2823816191,GB
2823816192,2823821311,US
2823821312,2823822335,IN
@@ -86246,8 +94875,8 @@
2823826432,2823827455,ES
2823827456,2823828479,SC
2823828480,2823829503,US
-2823829504,2823829759,ID
-2823829760,2823830015,RU
+2823829504,2823829759,SG
+2823829760,2823830015,IT
2823830016,2823830527,LT
2823830528,2823832575,SC
2823832576,2823833599,US
@@ -86296,10 +94925,9 @@
2823889920,2823890943,US
2823890944,2823891967,IN
2823891968,2823894015,ZA
-2823894016,2823895039,US
-2823895040,2823895295,GB
+2823894016,2823895295,US
2823895296,2823895551,RU
-2823895552,2823895807,AU
+2823895552,2823895807,US
2823895808,2823896063,RU
2823896064,2823897087,US
2823897088,2823898111,SC
@@ -86340,7 +94968,9 @@
2824011776,2824077311,AR
2824077312,2824290303,US
2824290304,2824292351,AU
-2824292352,2824404991,US
+2824292352,2824357887,US
+2824357888,2824359935,CA
+2824359936,2824404991,US
2824404992,2824470527,ZA
2824470528,2824472575,BR
2824472576,2824473599,AR
@@ -86385,7 +95015,17 @@
2824533760,2824534015,US
2824534016,2824535039,BR
2824535040,2824536063,AR
-2824536064,2824560639,US
+2824536064,2824542207,US
+2824542208,2824544255,CA
+2824544256,2824544511,US
+2824544512,2824544767,JP
+2824544768,2824545279,US
+2824545280,2824545535,CA
+2824545536,2824546047,US
+2824546048,2824546303,JP
+2824546304,2824546815,US
+2824546816,2824547071,CA
+2824547072,2824560639,US
2824560640,2824561663,GB
2824561664,2824562687,EC
2824562688,2824564223,US
@@ -86399,9 +95039,7 @@
2824567296,2824798207,US
2824798208,2824863743,TW
2824863744,2824929279,AR
-2824929280,2825007103,US
-2825007104,2825009151,GB
-2825009152,2825191423,US
+2824929280,2825191423,US
2825191424,2825256959,AR
2825256960,2825519103,US
2825519104,2825584639,HK
@@ -86474,11 +95112,23 @@
2828377088,2828377343,NL
2828377344,2828377855,US
2828377856,2828378111,DE
-2828378112,2828400639,US
+2828378112,2828378623,US
+2828378624,2828378879,CA
+2828378880,2828394495,US
+2828394496,2828398591,CA
+2828398592,2828400639,US
2828400640,2828401151,GB
-2828401152,2828533759,US
-2828533760,2828599551,AU
-2828599552,2828599807,IN
+2828401152,2828471295,US
+2828471296,2828472319,CA
+2828472320,2828472575,US
+2828472576,2828472831,CA
+2828472832,2828474367,US
+2828474368,2828475391,CA
+2828475392,2828478463,US
+2828478464,2828478719,AU
+2828478720,2828533759,US
+2828533760,2828599295,AU
+2828599296,2828599807,IN
2828599808,2828626687,AU
2828626688,2828627711,US
2828627712,2828627967,AU
@@ -86488,16 +95138,12 @@
2828730368,2828795903,ZA
2828795904,2829029375,US
2829029376,2829029631,CN
-2829029632,2829041663,US
-2829041664,2829043711,AU
-2829043712,2829058047,US
+2829029632,2829058047,US
2829058048,2829123583,CN
2829123584,2829148415,US
2829148416,2829148671,HK
-2829148672,2829174783,US
-2829174784,2829175039,GB
-2829175040,2829175295,US
-2829175296,2829175807,GB
+2829148672,2829175551,US
+2829175552,2829175807,GB
2829175808,2829184767,US
2829184768,2829185023,GB
2829185024,2829320191,US
@@ -86506,20 +95152,20 @@
2829451264,2829516799,US
2829516800,2829582335,BW
2829582336,2829590783,US
-2829590784,2829591033,GB
-2829591034,2829591034,US
-2829591035,2829591039,GB
+2829590784,2829591039,GB
2829591040,2829592575,US
2829592576,2829593343,GB
2829593344,2829593591,CH
2829593592,2829593595,US
2829593596,2829593599,CH
2829593600,2829594623,GB
-2829594624,2829844479,US
+2829594624,2829647359,US
+2829647360,2829647615,SG
+2829647616,2829844479,US
2829844480,2829910015,ZA
-2829910016,2830086655,US
-2830086656,2830086911,GB
-2830086912,2830106623,US
+2829910016,2830085887,US
+2830085888,2830086143,GB
+2830086144,2830106623,US
2830106624,2830172159,CO
2830172160,2830434303,US
2830434304,2830436351,BR
@@ -86591,7 +95237,19 @@
2831348736,2831361023,BR
2831361024,2831362047,AR
2831362048,2831365119,BR
-2831365120,2831367167,AR
+2831365120,2831366155,AR
+2831366156,2831366159,CO
+2831366160,2831366163,AR
+2831366164,2831366167,CO
+2831366168,2831366171,AR
+2831366172,2831366175,CO
+2831366176,2831366179,AR
+2831366180,2831366183,CO
+2831366184,2831366187,AR
+2831366188,2831366191,CO
+2831366192,2831366195,AR
+2831366196,2831366196,CO
+2831366197,2831367167,AR
2831367168,2831368191,CL
2831368192,2831371263,BR
2831371264,2831371999,BZ
@@ -86667,8 +95325,8 @@
2831531008,2831531135,EC
2831531136,2831531263,GT
2831531264,2831531519,EC
-2831531520,2831531775,PA
-2831531776,2831532031,EC
+2831531520,2831531903,PA
+2831531904,2831532031,EC
2831532032,2831533055,BR
2831533056,2831535103,AR
2831535104,2831536127,BR
@@ -86838,9 +95496,7 @@
2835196416,2835196671,YT
2835196672,2835196799,RE
2835196800,2835196927,YT
-2835196928,2835197183,RE
-2835197184,2835197439,YT
-2835197440,2835202047,RE
+2835196928,2835202047,RE
2835202048,2835206143,ZA
2835206144,2835208191,NG
2835208192,2835210239,ZA
@@ -86943,9 +95599,7 @@
2838337952,2838337967,US
2838337968,2838338079,NL
2838338080,2838338127,US
-2838338128,2838338183,NL
-2838338184,2838338191,US
-2838338192,2838338271,NL
+2838338128,2838338271,NL
2838338272,2838338303,JP
2838338304,2838338735,NL
2838338736,2838338751,US
@@ -87061,9 +95715,7 @@
2838421504,2838421567,US
2838421568,2838422015,NL
2838422016,2838422143,US
-2838422144,2838422527,NL
-2838422528,2838423551,CA
-2838423552,2838423807,NL
+2838422144,2838423807,NL
2838423808,2838423935,US
2838423936,2838424831,NL
2838424832,2838425087,US
@@ -87187,9 +95839,7 @@
2838513488,2838513503,US
2838513504,2838513583,NL
2838513584,2838513599,US
-2838513600,2838513767,NL
-2838513768,2838513775,US
-2838513776,2838513807,NL
+2838513600,2838513807,NL
2838513808,2838513823,US
2838513824,2838513855,NL
2838513856,2838513871,US
@@ -87225,9 +95875,7 @@
2838520464,2838520471,US
2838520472,2838520805,NL
2838520806,2838520807,US
-2838520808,2838520831,NL
-2838520832,2838521855,US
-2838521856,2838522031,NL
+2838520808,2838522031,NL
2838522032,2838522047,US
2838522048,2838522175,NL
2838522176,2838522239,US
@@ -87237,9 +95885,7 @@
2838523112,2838523119,US
2838523120,2838523231,NL
2838523232,2838523247,US
-2838523248,2838523391,NL
-2838523392,2838523423,US
-2838523424,2838523599,NL
+2838523248,2838523599,NL
2838523600,2838523603,US
2838523604,2838523615,NL
2838523616,2838523647,US
@@ -87255,9 +95901,7 @@
2838525511,2838525511,US
2838525512,2838525999,NL
2838526000,2838526015,US
-2838526016,2838526639,NL
-2838526640,2838526655,US
-2838526656,2838526695,NL
+2838526016,2838526695,NL
2838526696,2838526703,US
2838526704,2838526983,NL
2838526984,2838526991,US
@@ -87363,9 +96007,7 @@
2838547744,2838547775,US
2838547776,2838547807,NL
2838547808,2838547823,US
-2838547824,2838548239,NL
-2838548240,2838548247,US
-2838548248,2838548359,NL
+2838547824,2838548359,NL
2838548360,2838548367,US
2838548368,2838549411,NL
2838549412,2838549415,US
@@ -87401,9 +96043,7 @@
2838554432,2838554463,US
2838554464,2838554575,NL
2838554576,2838554583,US
-2838554584,2838554799,NL
-2838554800,2838554815,JP
-2838554816,2838555135,NL
+2838554584,2838555135,NL
2838555136,2838555143,US
2838555144,2838556671,NL
2838556672,2838556687,US
@@ -87493,9 +96133,7 @@
2838866164,2838866165,JP
2838866166,2838866451,US
2838866452,2838866452,CA
-2838866453,2838869605,US
-2838869606,2838869607,JP
-2838869608,2838870111,US
+2838866453,2838870111,US
2838870112,2838870127,CA
2838870128,2838871295,US
2838871296,2838871311,CA
@@ -87513,11 +96151,7 @@
2838931014,2838931015,CZ
2838931016,2838931016,US
2838931017,2838931023,CZ
-2838931024,2838933919,US
-2838933920,2838933951,NL
-2838933952,2838946431,US
-2838946432,2838946447,KE
-2838946448,2838957535,US
+2838931024,2838957535,US
2838957536,2838957551,HK
2838957552,2838960815,US
2838960816,2838960819,CZ
@@ -87539,9 +96173,7 @@
2838969815,2838969815,JP
2838969816,2838969820,US
2838969821,2838969821,CA
-2838969822,2838987569,US
-2838987570,2838987571,JP
-2838987572,2838987991,US
+2838969822,2838987991,US
2838987992,2838987999,CA
2838988000,2838988639,US
2838988640,2838988671,CA
@@ -87569,7 +96201,9 @@
2839021236,2839021238,JP
2839021239,2839021239,US
2839021240,2839021242,JP
-2839021243,2839035903,US
+2839021243,2839028735,US
+2839028736,2839029759,JP
+2839029760,2839035903,US
2839035904,2839052287,KR
2839052288,2839053951,US
2839053952,2839053983,HK
@@ -87580,7 +96214,9 @@
2839117824,2839150591,BR
2839150592,2839292927,US
2839292928,2839293951,CA
-2839293952,2839300031,US
+2839293952,2839297023,US
+2839297024,2839298047,CA
+2839298048,2839300031,US
2839300032,2839300047,AF
2839300048,2839315471,US
2839315472,2839315487,JP
@@ -87606,7 +96242,9 @@
2843803648,2843869183,ZA
2843869184,2844524543,US
2844524544,2844590079,KR
-2844590080,2844903423,US
+2844590080,2844882943,US
+2844882944,2844884991,CA
+2844884992,2844903423,US
2844903424,2844905471,SG
2844905472,2845114367,US
2845114368,2845179903,IN
@@ -87804,7 +96442,8 @@
2855481344,2855483391,PY
2855483392,2855484671,AR
2855484672,2855485183,PY
-2855485184,2855489535,UY
+2855485184,2855485439,AR
+2855485440,2855489535,UY
2855489536,2855497727,AR
2855497728,2855499775,PY
2855499776,2855501823,UY
@@ -88025,8 +96664,8 @@
2857684992,2857686015,CL
2857686016,2857687039,AR
2857687040,2857690111,BR
-2857690112,2857690879,HN
-2857690880,2857691135,US
+2857690112,2857690623,HN
+2857690624,2857691135,US
2857691136,2857692159,AR
2857692160,2857696255,BR
2857696256,2857697279,AR
@@ -88053,9 +96692,9 @@
2860678912,2860678975,NL
2860678976,2860679007,US
2860679008,2860679039,NL
-2860679040,2861070335,US
-2861070336,2861070591,CA
-2861070592,2861697023,US
+2860679040,2860691199,US
+2860691200,2860691455,NL
+2860691456,2861697023,US
2861697024,2861699071,CA
2861699072,2861842431,US
2861842432,2861843851,HK
@@ -88065,9 +96704,7 @@
2861858816,2861859974,HK
2861859975,2861859976,US
2861859977,2861860863,HK
-2861860864,2861862911,US
-2861862912,2861863423,AU
-2861863424,2861955071,US
+2861860864,2861955071,US
2861955072,2861955583,GB
2861955584,2861956095,FR
2861956096,2861957119,US
@@ -88102,19 +96739,17 @@
2862284800,2862350335,AR
2862350336,2862415871,US
2862415872,2862481407,AU
-2862481408,2863121279,US
-2863121280,2863121343,CA
-2863121344,2863202303,US
+2862481408,2863202303,US
2863202304,2863267839,MX
2863267840,2863595519,US
2863595520,2863661055,CA
-2863661056,2863857663,US
+2863661056,2863831295,US
+2863831296,2863831807,CA
+2863831808,2863857663,US
2863857664,2863923199,CN
2863923200,2864844799,US
-2864844800,2864846847,NL
-2864846848,2864848895,US
-2864848896,2864849151,GB
-2864849152,2865168383,US
+2864844800,2864845823,NL
+2864845824,2865168383,US
2865168384,2865209343,CA
2865209344,2865219583,US
2865219584,2865219839,CA
@@ -88386,7 +97021,9 @@
2868379648,2868380159,IN
2868380160,2868382719,US
2868382720,2868383231,IN
-2868383232,2868390399,US
+2868383232,2868387839,US
+2868387840,2868389887,IE
+2868389888,2868390399,US
2868390400,2868390911,IN
2868390912,2868391423,US
2868391424,2868391935,IN
@@ -88415,8 +97052,7 @@
2868599296,2868599807,IN
2868599808,2868604415,US
2868604416,2868604927,IN
-2868604928,2868606975,CA
-2868606976,2868612607,US
+2868604928,2868612607,US
2868612608,2868613119,IN
2868613120,2868615679,US
2868615680,2868616703,IN
@@ -88433,9 +97069,7 @@
2868673280,2868673535,ZA
2868673536,2868674336,US
2868674337,2868674337,SE
-2868674338,2868676607,US
-2868676608,2868678655,AU
-2868678656,2868731903,US
+2868674338,2868731903,US
2868731904,2868740095,CA
2868740096,2868772863,US
2868772864,2868773887,CO
@@ -88472,7 +97106,9 @@
2868838400,2868903935,BE
2868903936,2869035007,SG
2869035008,2869166079,JP
-2869166080,2869428223,TH
+2869166080,2869360511,TH
+2869360512,2869360639,FR
+2869360640,2869428223,TH
2869428224,2869952511,CN
2869952512,2870018047,FR
2870018048,2870083583,DE
@@ -88483,10 +97119,69 @@
2870149120,2870214655,HU
2870214656,2870228223,DK
2870228224,2870228991,US
-2870228992,2870230015,DK
-2870230016,2870231039,HU
-2870231040,2870280191,DK
+2870228992,2870229247,DK
+2870229248,2870231039,HU
+2870231040,2870234111,DK
+2870234112,2870234367,SG
+2870234368,2870280191,DK
2870280192,2870345727,NL
+2870345728,2870346751,FR
+2870346752,2870347775,RU
+2870347776,2870348799,ES
+2870348800,2870349823,NO
+2870349824,2870350847,DE
+2870350848,2870351871,BA
+2870351872,2870352383,DE
+2870352384,2870352895,IR
+2870352896,2870353919,DE
+2870353920,2870354943,SK
+2870354944,2870355967,US
+2870355968,2870356991,IE
+2870356992,2870358015,IT
+2870358016,2870359039,DE
+2870359040,2870360063,FR
+2870360064,2870361087,TR
+2870361088,2870362111,GB
+2870362112,2870363135,NL
+2870363136,2870364159,SE
+2870364160,2870365183,DE
+2870365184,2870366207,US
+2870366208,2870367231,PL
+2870367232,2870368255,ES
+2870368256,2870369279,PL
+2870369280,2870370303,IT
+2870370304,2870371327,SK
+2870371328,2870372351,NL
+2870372352,2870373375,DE
+2870373376,2870374399,LV
+2870374400,2870375423,DE
+2870375424,2870377471,LV
+2870377472,2870381567,NL
+2870381568,2870382591,ES
+2870382592,2870383615,FR
+2870383616,2870384639,AL
+2870384640,2870385663,NO
+2870385664,2870386687,FR
+2870386688,2870387711,PL
+2870387712,2870388735,ES
+2870388736,2870390783,DE
+2870390784,2870391807,NL
+2870391808,2870392831,RU
+2870392832,2870393855,TR
+2870393856,2870394879,DE
+2870394880,2870395903,GB
+2870395904,2870396927,LU
+2870396928,2870397951,GB
+2870397952,2870398975,DE
+2870398976,2870399999,IT
+2870400000,2870401023,RU
+2870401024,2870402047,NL
+2870402048,2870403071,LT
+2870403072,2870404095,GB
+2870404096,2870405119,CY
+2870405120,2870406143,IT
+2870406144,2870407167,RU
+2870407168,2870408191,LT
2870411264,2870476799,NO
2870476800,2870542335,DE
2870542336,2870575103,CH
@@ -88537,7 +97232,10 @@
2871083008,2871099391,FR
2871099392,2871101439,NL
2871101440,2871103487,CZ
-2871103488,2871105535,GB
+2871103488,2871103743,GB
+2871103744,2871103999,IE
+2871104000,2871104511,NO
+2871104512,2871105535,IE
2871105536,2871107583,FR
2871107584,2871111679,GB
2871111680,2871115775,DE
@@ -88553,9 +97251,7 @@
2874146816,2875195391,CN
2875195392,2875719679,TH
2875719680,2877292543,CN
-2877292544,2879336447,US
-2879336448,2879338495,GB
-2879338496,2879914495,US
+2877292544,2879914495,US
2879914496,2879914559,FR
2879914560,2882469887,US
2882469888,2882535423,SG
@@ -88589,7 +97285,8 @@
2890165248,2890166271,DE
2890166272,2890167295,CL
2890167296,2890168319,AU
-2890168320,2890169343,CW
+2890168320,2890168831,CW
+2890168832,2890169343,US
2890169344,2890170367,AM
2890170368,2890171391,DJ
2890171392,2890172415,US
@@ -88624,7 +97321,9 @@
2890204160,2890205183,US
2890205184,2890206207,RU
2890206208,2890207231,NG
-2890207232,2890216447,US
+2890207232,2890212863,US
+2890212864,2890213375,PK
+2890213376,2890216447,US
2890216448,2890217471,NL
2890217472,2890218495,GR
2890218496,2890221567,US
@@ -88637,7 +97336,7 @@
2890227712,2890228735,HK
2890228736,2890229759,IQ
2890229760,2890230783,IN
-2890230784,2890231807,JP
+2890230784,2890231807,US
2890231808,2890232831,ZA
2890232832,2890233855,TR
2890233856,2890234879,IE
@@ -88663,7 +97362,7 @@
2890256384,2890257407,US
2890257408,2890259455,CA
2890259456,2890260479,LU
-2890260480,2890260991,US
+2890260480,2890260991,PK
2890260992,2890261503,FR
2890261504,2890262527,BH
2890262528,2890264575,US
@@ -88699,7 +97398,11 @@
2891122688,2891123199,NL
2891123200,2891130879,US
2891130880,2891131135,CA
-2891131136,2891134975,US
+2891131136,2891132159,US
+2891132160,2891132415,NL
+2891132416,2891132671,US
+2891132672,2891132927,DE
+2891132928,2891134975,US
2891134976,2891135999,CA
2891136000,2891138047,US
2891138048,2891141119,CA
@@ -88766,11 +97469,7 @@
2891824128,2891824639,HK
2891824640,2891832319,US
2891832320,2891832831,JP
-2891832832,2891833983,US
-2891833984,2891834111,PA
-2891834112,2891834559,US
-2891834560,2891834567,PA
-2891834568,2891841535,US
+2891832832,2891841535,US
2891841536,2891841791,SE
2891841792,2891842303,US
2891842304,2891842559,GB
@@ -88793,8 +97492,7 @@
2891849216,2891850239,US
2891850240,2891850495,TH
2891850496,2891850751,AM
-2891850752,2891851007,US
-2891851008,2891851263,EE
+2891850752,2891851263,US
2891851264,2891851519,AM
2891851520,2891853567,US
2891853568,2891853823,SG
@@ -88838,8 +97536,7 @@
2891865856,2891866111,US
2891866112,2891866367,AU
2891866368,2891866623,BB
-2891866624,2891867391,AU
-2891867392,2891867647,AT
+2891866624,2891867647,AU
2891867648,2891867903,US
2891867904,2891868159,AU
2891868160,2891868671,IT
@@ -88857,9 +97554,13 @@
2891874048,2891874303,CA
2891874304,2891976535,US
2891976536,2891976543,CA
-2891976544,2891982847,US
+2891976544,2891977727,US
+2891977728,2891978751,CA
+2891978752,2891982847,US
2891982848,2891984895,CA
-2891984896,2891997695,US
+2891984896,2891993855,US
+2891993856,2891994111,GB
+2891994112,2891997695,US
2891997696,2891997951,IE
2891997952,2892004351,US
2892004352,2892004607,BR
@@ -88895,11 +97596,14 @@
2892070912,2892103679,CA
2892103680,2892120575,US
2892120576,2892121087,CA
-2892121088,2892124927,US
+2892121088,2892121343,GB
+2892121344,2892124927,US
2892124928,2892125183,NL
-2892125184,2892126719,US
-2892126720,2892126975,GB
-2892126976,2892140543,US
+2892125184,2892126207,US
+2892126208,2892126975,GB
+2892126976,2892127231,US
+2892127232,2892127487,GB
+2892127488,2892140543,US
2892140544,2892144895,CA
2892144896,2892145407,US
2892145408,2892145663,CA
@@ -88966,11 +97670,13 @@
2892561014,2892561014,DE
2892561015,2892611583,US
2892611584,2892627967,JP
-2892627968,2892744959,US
+2892627968,2892717567,US
+2892717568,2892718079,NL
+2892718080,2892744959,US
2892744960,2892745215,JP
-2892745216,2892746495,US
-2892746496,2892746751,BR
-2892746752,2892906495,US
+2892745216,2892746239,US
+2892746240,2892747007,BR
+2892747008,2892906495,US
2892906496,2892910591,CA
2892910592,2892943743,US
2892943744,2892943871,LR
@@ -89262,9 +97968,9 @@
2905402520,2905402527,IN
2905402528,2905406847,US
2905406848,2905406911,PL
-2905406912,2905415679,US
-2905415680,2905415935,GB
-2905415936,2905473023,US
+2905406912,2905456639,US
+2905456640,2905464831,CA
+2905464832,2905473023,US
2905473024,2905481215,CA
2905481216,2905494783,US
2905494784,2905495039,RU
@@ -89272,9 +97978,7 @@
2905510912,2905511935,CA
2905511936,2905512959,US
2905512960,2905513471,CA
-2905513472,2910029823,US
-2910029824,2910031871,PR
-2910031872,2913992703,US
+2905513472,2913992703,US
2913992704,2914516991,CA
2914516992,2915105791,US
2915105792,2915106047,NL
@@ -89405,20 +98109,57 @@
2916532224,2916532735,IN
2916532736,2916532991,CA
2916532992,2916533247,IN
-2916533248,2916581375,US
+2916533248,2916534271,CA
+2916534272,2916581375,US
2916581376,2916614143,PR
2916614144,2917031935,US
2917031936,2917032959,NL
2917032960,2917035007,US
-2917035008,2917035519,NL
+2917035008,2917035395,NL
+2917035396,2917035399,CH
+2917035400,2917035403,NL
+2917035404,2917035407,CH
+2917035408,2917035411,NL
+2917035412,2917035415,CH
+2917035416,2917035419,NL
+2917035420,2917035423,CH
+2917035424,2917035519,NL
2917035520,2917040127,US
2917040128,2917041151,NL
-2917041152,2917045503,US
+2917041152,2917045293,US
+2917045294,2917045295,SG
+2917045296,2917045299,US
+2917045300,2917045303,SG
+2917045304,2917045307,US
+2917045308,2917045311,SG
+2917045312,2917045315,US
+2917045316,2917045319,SG
+2917045320,2917045323,US
+2917045324,2917045327,SG
+2917045328,2917045331,US
+2917045332,2917045335,SG
+2917045336,2917045339,US
+2917045340,2917045340,SG
+2917045341,2917045503,US
2917045504,2917045759,NL
2917045760,2917058559,US
2917058560,2917059583,NL
2917059584,2917060607,US
-2917060608,2917061631,NL
+2917060608,2917061547,NL
+2917061548,2917061560,GB
+2917061561,2917061561,NL
+2917061562,2917061563,GB
+2917061564,2917061564,NL
+2917061565,2917061571,GB
+2917061572,2917061572,NL
+2917061573,2917061573,GB
+2917061574,2917061574,NL
+2917061575,2917061582,GB
+2917061583,2917061583,NL
+2917061584,2917061589,GB
+2917061590,2917061591,NL
+2917061592,2917061593,GB
+2917061594,2917061631,NL
2917061632,2917068799,US
2917068800,2917069823,NL
2917069824,2917075455,US
@@ -89428,14 +98169,60 @@
2917079040,2917080063,US
2917080064,2917081087,NL
2917081088,2917099519,US
-2917099520,2917100543,NL
+2917099520,2917100291,NL
+2917100292,2917100295,BE
+2917100296,2917100299,NL
+2917100300,2917100303,BE
+2917100304,2917100307,NL
+2917100308,2917100311,BE
+2917100312,2917100543,NL
2917100544,2917101567,US
2917101568,2917106175,NL
2917106176,2917112831,US
2917112832,2917113855,NL
2917113856,2917115903,US
2917115904,2917116927,NL
-2917116928,2917167905,US
+2917116928,2917131062,US
+2917131063,2917131063,KR
+2917131064,2917131067,US
+2917131068,2917131071,KR
+2917131072,2917131075,US
+2917131076,2917131079,KR
+2917131080,2917131083,US
+2917131084,2917131087,KR
+2917131088,2917131091,US
+2917131092,2917131095,KR
+2917131096,2917131099,US
+2917131100,2917131103,KR
+2917131104,2917131107,US
+2917131108,2917131111,KR
+2917131112,2917131115,US
+2917131116,2917131119,KR
+2917131120,2917131123,US
+2917131124,2917131127,KR
+2917131128,2917131139,US
+2917131140,2917131143,KR
+2917131144,2917131147,US
+2917131148,2917131151,KR
+2917131152,2917131155,US
+2917131156,2917131159,KR
+2917131160,2917131163,US
+2917131164,2917131167,KR
+2917131168,2917131171,US
+2917131172,2917131175,KR
+2917131176,2917131179,US
+2917131180,2917131183,KR
+2917131184,2917131187,US
+2917131188,2917131191,KR
+2917131192,2917131203,US
+2917131204,2917131205,KR
+2917131206,2917131219,US
+2917131220,2917131220,KR
+2917131221,2917133252,US
+2917133253,2917133255,IN
+2917133256,2917133259,US
+2917133260,2917133262,IN
+2917133263,2917167905,US
2917167906,2917167906,BZ
2917167907,2917171199,US
2917171200,2917175295,CA
@@ -89445,7 +98232,8 @@
2917257216,2917261311,KY
2917261312,2917265407,US
2917265408,2917267775,JM
-2917267776,2917267967,VG
+2917267776,2917267839,VG
+2917267840,2917267967,AG
2917267968,2917268223,JM
2917268224,2917268479,BB
2917268480,2917269113,JM
@@ -89497,20 +98285,16 @@
2918172791,2918172793,MX
2918172794,2918172794,US
2918172795,2918172800,AR
-2918172801,2918173695,US
-2918173696,2918173951,CO
-2918173952,2918174207,US
+2918172801,2918174207,US
2918174208,2918174463,EC
2918174464,2918174719,MX
2918174720,2918179584,US
2918179585,2918179839,PE
-2918179840,2918180095,US
-2918180096,2918180351,VE
+2918179840,2918180351,US
2918180352,2918180863,CA
-2918180864,2918181119,US
-2918181120,2918181375,VE
-2918181376,2918181631,NZ
-2918181632,2918187007,US
+2918180864,2918186239,US
+2918186240,2918186495,CA
+2918186496,2918187007,US
2918187008,2918187263,CA
2918187264,2918187775,US
2918187776,2918188031,CA
@@ -89522,8 +98306,7 @@
2918260736,2918264831,CA
2918264832,2918277119,US
2918277120,2918281215,CA
-2918281216,2918287103,US
-2918287104,2918287359,CR
+2918281216,2918287359,US
2918287360,2918289407,GB
2918289408,2918313983,US
2918313984,2918314216,NL
@@ -89555,11 +98338,7 @@
2918462976,2918463231,US
2918463232,2918463487,CA
2918463488,2918469631,US
-2918469632,2918471423,CA
-2918471424,2918471679,US
-2918471680,2918472703,CA
-2918472704,2918473215,US
-2918473216,2918473727,CA
+2918469632,2918473727,CA
2918473728,2918477823,US
2918477824,2918481919,CA
2918481920,2918486015,US
@@ -89588,9 +98367,7 @@
2918580224,2918588415,CA
2918588416,2918596607,US
2918596608,2918604287,CA
-2918604288,2918604543,US
-2918604544,2918604799,CA
-2918604800,2918612991,US
+2918604288,2918612991,US
2918612992,2918621183,CA
2918621184,2918628351,US
2918628352,2918628607,DE
@@ -89748,8 +98525,8 @@
2928320512,2928328703,US
2928328704,2928336895,CA
2928336896,2928338943,US
-2928338944,2928339455,GB
-2928339456,2928455679,US
+2928338944,2928339967,GB
+2928339968,2928455679,US
2928455680,2928459775,CA
2928459776,2928465407,US
2928465408,2928465663,FR
@@ -89765,9 +98542,7 @@
2928475136,2928541695,US
2928541696,2928546143,CA
2928546144,2928546151,MX
-2928546152,2928549527,CA
-2928549528,2928549535,US
-2928549536,2928553303,CA
+2928546152,2928553303,CA
2928553304,2928553311,HU
2928553312,2928555831,CA
2928555832,2928555839,SE
@@ -89781,15 +98556,11 @@
2928564448,2928564455,MX
2928564456,2928570671,CA
2928570672,2928570687,FR
-2928570688,2928578631,CA
-2928578632,2928578639,US
-2928578640,2928579543,CA
+2928570688,2928579543,CA
2928579544,2928579551,HU
2928579552,2928583735,CA
2928583736,2928583743,SY
-2928583744,2928583759,CA
-2928583760,2928583767,US
-2928583768,2928583983,CA
+2928583744,2928583983,CA
2928583984,2928583991,SE
2928583992,2928588399,CA
2928588400,2928588407,AE
@@ -89866,9 +98637,15 @@
2938748928,2938765311,JP
2938765312,2938961919,CN
2938961920,2938978303,HK
-2938978304,2938986495,AU
+2938978304,2938984191,AU
+2938984192,2938984447,NZ
+2938984448,2938985727,AU
+2938985728,2938985983,NZ
+2938985984,2938986495,AU
2938986496,2938986751,NZ
-2938986752,2938996735,AU
+2938986752,2938988031,AU
+2938988032,2938988287,NZ
+2938988288,2938996735,AU
2938996736,2938998783,JP
2938998784,2939002879,AU
2939002880,2939004927,KR
@@ -89947,8 +98724,7 @@
2947586048,2947587071,HK
2947587072,2947588095,CN
2947588096,2947590143,ID
-2947590144,2947590655,JP
-2947590656,2947591090,SG
+2947590144,2947591090,SG
2947591091,2947591091,HK
2947591092,2947592191,SG
2947592192,2947593215,CN
@@ -90111,8 +98887,7 @@
2954826760,2954826763,ES
2954826764,2954826775,FR
2954826776,2954826779,ES
-2954826780,2954826815,FR
-2954826816,2954826879,GB
+2954826780,2954826879,FR
2954826880,2954827007,DE
2954827008,2954827135,ES
2954827136,2954827295,FR
@@ -90129,7 +98904,9 @@
2954828340,2954828343,PL
2954828344,2954828443,FR
2954828444,2954828447,CZ
-2954828448,2954828511,FR
+2954828448,2954828483,FR
+2954828484,2954828487,DK
+2954828488,2954828511,FR
2954828512,2954828543,CZ
2954828544,2954828847,FR
2954828848,2954828863,GB
@@ -90198,9 +98975,7 @@
2954832448,2954832479,CZ
2954832480,2954832607,FR
2954832608,2954832639,PT
-2954832640,2954832695,FR
-2954832696,2954832699,NL
-2954832700,2954832767,FR
+2954832640,2954832767,FR
2954832768,2954832771,DE
2954832772,2954832843,FR
2954832844,2954832847,GB
@@ -90262,7 +99037,9 @@
2954836984,2954836991,PT
2954836992,2954837071,FR
2954837072,2954837075,ES
-2954837076,2954837279,FR
+2954837076,2954837131,FR
+2954837132,2954837135,PL
+2954837136,2954837279,FR
2954837280,2954837295,DE
2954837296,2954837311,FR
2954837312,2954837319,FI
@@ -90295,9 +99072,7 @@
2954838216,2954838219,GB
2954838220,2954838247,FR
2954838248,2954838255,ES
-2954838256,2954838383,FR
-2954838384,2954838387,NL
-2954838388,2954838543,FR
+2954838256,2954838543,FR
2954838544,2954838559,PL
2954838560,2954838655,FR
2954838656,2954838687,BE
@@ -90319,14 +99094,16 @@
2954839360,2954839363,DE
2954839364,2954839647,FR
2954839648,2954839679,DE
-2954839680,2954840095,FR
+2954839680,2954840003,FR
+2954840004,2954840007,GB
+2954840008,2954840095,FR
2954840096,2954840103,ES
2954840104,2954840255,FR
2954840256,2954840381,GB
2954840382,2954840382,BE
2954840383,2954840447,GB
-2954840448,2954840515,FR
-2954840516,2954840519,NL
+2954840448,2954840511,FR
+2954840512,2954840519,NL
2954840520,2954840575,FR
2954840576,2954840591,DE
2954840592,2954840611,FR
@@ -90378,7 +99155,9 @@
2954843480,2954843487,NL
2954843488,2954843503,FR
2954843504,2954843507,ES
-2954843508,2954843643,FR
+2954843508,2954843623,FR
+2954843624,2954843627,ES
+2954843628,2954843643,FR
2954843644,2954843647,DE
2954843648,2954843759,FR
2954843760,2954843771,ES
@@ -90483,7 +99262,9 @@
2954858080,2954858095,ES
2954858096,2954858431,FR
2954858432,2954858439,GB
-2954858440,2954858495,FR
+2954858440,2954858483,FR
+2954858484,2954858487,CZ
+2954858488,2954858495,FR
2954858496,2954858751,ES
2954858752,2954858827,FR
2954858828,2954858831,GB
@@ -90579,9 +99360,7 @@
2954872332,2954872335,GB
2954872336,2954872423,FR
2954872424,2954872431,PL
-2954872432,2954872607,FR
-2954872608,2954872639,ES
-2954872640,2954872679,FR
+2954872432,2954872679,FR
2954872680,2954872687,ES
2954872688,2954872991,FR
2954872992,2954873023,PL
@@ -90711,8 +99490,8 @@
2954936320,2954938367,AM
2954938368,2954940415,HU
2954940416,2954944511,SA
-2954944512,2954946559,GB
-2954946560,2954948607,DE
+2954944512,2954945535,GB
+2954945536,2954948607,DE
2954948608,2954950655,RU
2954950656,2954952703,ES
2954952704,2955018239,TR
@@ -90758,8 +99537,10 @@
2956304384,2956306431,RU
2956306432,2956307455,GB
2956307456,2956308479,RU
-2956308480,2956309503,DE
-2956309504,2956311551,RU
+2956308480,2956309503,US
+2956309504,2956310527,RU
+2956310528,2956311039,BZ
+2956311040,2956311551,RU
2956311552,2956312575,CZ
2956312576,2956328959,RU
2956328960,2956460031,TR
@@ -90814,9 +99595,12 @@
2956605696,2956607487,RU
2956607488,2956611583,PS
2956611584,2956613631,IT
+2956613632,2956613887,GB
+2956613888,2956614143,NL
2956614144,2956614399,FR
2956614656,2956614911,GB
2956614912,2956615167,NL
+2956615168,2956615423,FR
2956615680,2956623871,GB
2956623872,2956656639,GR
2956656640,2956722175,RU
@@ -91180,7 +99964,9 @@
2960064512,2960066559,RO
2960066560,2960068607,RU
2960068608,2960072703,PL
-2960072704,2960080895,UA
+2960072704,2960078335,UA
+2960078336,2960078847,US
+2960078848,2960080895,UA
2960080896,2960084991,RU
2960084992,2960089087,UA
2960089088,2960091135,RU
@@ -91210,8 +99996,8 @@
2960166912,2960171007,EE
2960171008,2960175103,RU
2960175104,2960179199,SK
-2960179200,2960206847,RU
-2960206848,2960207871,GB
+2960179200,2960207359,RU
+2960207360,2960207871,GB
2960207872,2960211967,RU
2960211968,2960212991,JP
2960212992,2960214015,GB
@@ -91297,7 +100083,8 @@
2960568320,2960569343,BH
2960569344,2960570367,DE
2960570368,2960571391,RO
-2960571392,2960574463,RU
+2960571392,2960572415,GB
+2960572416,2960574463,RU
2960574464,2960576511,RO
2960576512,2960588799,RU
2960588800,2960592895,UA
@@ -91392,7 +100179,9 @@
2960926720,2960927743,FR
2960927744,2960928767,RU
2960928768,2960929023,KH
-2960929024,2960929791,EE
+2960929024,2960929279,EE
+2960929280,2960929535,US
+2960929536,2960929791,EE
2960929792,2960930815,GB
2960930816,2960931839,RO
2960931840,2960932863,NO
@@ -91573,14 +100362,16 @@
2967601152,2967633919,HU
2967633920,2967666687,RU
2967666688,2967699455,TR
-2967699456,2967703551,GB
+2967699456,2967702143,GB
+2967702272,2967703551,GB
2967703552,2967707647,ES
2967707648,2967709695,PL
2967709696,2967711743,IT
2967711744,2967715839,RU
2967715840,2967724031,GB
2967724032,2967728127,CY
-2967728128,2967729151,DE
+2967728128,2967728639,DE
+2967728640,2967729151,US
2967729152,2967730175,UA
2967730176,2967732223,CZ
2967732224,2967994367,IL
@@ -91735,7 +100526,9 @@
2987710464,2987712511,DK
2987712512,2987714559,TR
2987714560,2987716607,RU
-2987716608,2987718655,FR
+2987716608,2987717119,FR
+2987717120,2987717375,GB
+2987717376,2987718655,FR
2987718656,2987720703,NL
2987720704,2987722751,DE
2987722752,2987724799,RU
@@ -91774,16 +100567,14 @@
2987782144,2987784191,EE
2987784192,2987786239,DK
2987786240,2987788287,FR
-2987788288,2987789052,GB
-2987789053,2987789054,US
-2987789055,2987792383,GB
+2987788288,2987790335,US
+2987790336,2987792383,GB
2987792384,2987794431,CH
2987794432,2987796479,IQ
2987796480,2987800575,RU
2987800576,2987802623,NL
2987802624,2987804671,CH
-2987804672,2987806463,IR
-2987806464,2987806719,TR
+2987804672,2987806719,IR
2987806720,2987808767,NL
2987808768,2987810815,RU
2987810816,2987812863,NO
@@ -91853,7 +100644,9 @@
2988442076,2988442079,ES
2988442080,2988442207,FR
2988442208,2988442239,ES
-2988442240,2988442511,FR
+2988442240,2988442367,FR
+2988442368,2988442383,GB
+2988442384,2988442511,FR
2988442512,2988442519,ES
2988442520,2988442527,DE
2988442528,2988442719,FR
@@ -92006,12 +100799,13 @@
2988460280,2988460287,PL
2988460288,2988460399,FR
2988460400,2988460415,DE
-2988460416,2988460551,FR
+2988460416,2988460543,FR
+2988460544,2988460547,NL
+2988460548,2988460551,FR
2988460552,2988460559,PL
-2988460560,2988460575,FR
+2988460560,2988460575,CZ
2988460576,2988460591,PT
-2988460592,2988460607,GB
-2988460608,2988460651,FR
+2988460592,2988460651,FR
2988460652,2988460655,ES
2988460656,2988460735,FR
2988460736,2988460751,PT
@@ -92325,13 +101119,17 @@
2988487104,2988487303,FR
2988487304,2988487311,NL
2988487312,2988487327,DE
-2988487328,2988487375,FR
+2988487328,2988487351,FR
+2988487352,2988487355,GB
+2988487356,2988487375,FR
2988487376,2988487383,ES
2988487384,2988487839,FR
2988487840,2988487871,CZ
2988487872,2988487919,FR
2988487920,2988487923,DE
-2988487924,2988487979,FR
+2988487924,2988487943,FR
+2988487944,2988487947,DE
+2988487948,2988487979,FR
2988487980,2988487983,ES
2988487984,2988488491,FR
2988488492,2988488495,ES
@@ -92365,7 +101163,9 @@
2988489480,2988489483,DE
2988489484,2988489675,FR
2988489676,2988489679,ES
-2988489680,2988489935,FR
+2988489680,2988489747,FR
+2988489748,2988489751,LT
+2988489752,2988489935,FR
2988489936,2988489943,ES
2988489944,2988490179,FR
2988490180,2988490191,ES
@@ -92393,9 +101193,7 @@
2988492416,2988492543,CZ
2988492544,2988492799,FR
2988492800,2988494847,PL
-2988494848,2988494899,FR
-2988494900,2988494903,DE
-2988494904,2988495199,FR
+2988494848,2988495199,FR
2988495200,2988495231,IT
2988495232,2988495967,FR
2988495968,2988495999,ES
@@ -92508,7 +101306,9 @@
2988504528,2988504543,PL
2988504544,2988504559,FR
2988504560,2988504563,FI
-2988504564,2988504983,FR
+2988504564,2988504583,FR
+2988504584,2988504587,NL
+2988504588,2988504983,FR
2988504984,2988504987,ES
2988504988,2988504991,DE
2988504992,2988505215,FR
@@ -92528,13 +101328,9 @@
2988505920,2988505935,GB
2988505936,2988506063,FR
2988506064,2988506071,GB
-2988506072,2988506367,FR
-2988506368,2988506375,IE
-2988506376,2988506523,FR
+2988506072,2988506523,FR
2988506524,2988506527,IE
-2988506528,2988506543,FR
-2988506544,2988506551,DE
-2988506552,2988506735,FR
+2988506528,2988506735,FR
2988506736,2988506751,DE
2988506752,2988506887,FR
2988506888,2988506891,ES
@@ -92544,16 +101340,11 @@
2988507164,2988507167,ES
2988507168,2988507335,FR
2988507336,2988507339,ES
-2988507340,2988507391,FR
-2988507392,2988507423,DE
+2988507340,2988507423,FR
2988507424,2988507431,PL
2988507432,2988507539,FR
2988507540,2988507543,PL
-2988507544,2988507551,FR
-2988507552,2988507560,GB
-2988507561,2988507561,FR
-2988507562,2988507567,GB
-2988507568,2988507583,FR
+2988507544,2988507583,FR
2988507584,2988507591,ES
2988507592,2988507687,FR
2988507688,2988507695,ES
@@ -92632,7 +101423,9 @@
2988511712,2988511719,DE
2988511720,2988511747,FR
2988511748,2988511751,GB
-2988511752,2988512199,FR
+2988511752,2988512051,FR
+2988512052,2988512055,FI
+2988512056,2988512199,FR
2988512200,2988512207,ES
2988512208,2988512239,FR
2988512240,2988512247,DE
@@ -92646,7 +101439,9 @@
2988512344,2988512399,FR
2988512400,2988512403,ES
2988512404,2988512407,LT
-2988512408,2988512631,FR
+2988512408,2988512459,FR
+2988512460,2988512463,DE
+2988512464,2988512631,FR
2988512632,2988512639,PL
2988512640,2988512647,GB
2988512648,2988512655,FR
@@ -92799,7 +101594,9 @@
2988528448,2988528455,IE
2988528456,2988528467,FR
2988528468,2988528471,GB
-2988528472,2988528591,FR
+2988528472,2988528567,FR
+2988528568,2988528571,DE
+2988528572,2988528591,FR
2988528592,2988528607,FI
2988528608,2988528699,FR
2988528700,2988528703,CZ
@@ -92863,7 +101660,9 @@
2988533184,2988533247,BE
2988533248,2988535807,FR
2988535808,2988537855,ES
-2988537856,2988539935,FR
+2988537856,2988539903,FR
+2988539904,2988539907,GB
+2988539908,2988539935,FR
2988539936,2988539967,GB
2988539968,2988539971,FR
2988539972,2988539975,ES
@@ -92883,7 +101682,9 @@
2988540652,2988540655,PL
2988540656,2988540759,FR
2988540760,2988540763,ES
-2988540764,2988541103,FR
+2988540764,2988540927,FR
+2988540928,2988540931,NL
+2988540932,2988541103,FR
2988541104,2988541119,ES
2988541120,2988541131,FR
2988541132,2988541135,DE
@@ -92897,7 +101698,9 @@
2988541424,2988541439,DE
2988541440,2988541455,FR
2988541456,2988541467,ES
-2988541468,2988541791,FR
+2988541468,2988541731,FR
+2988541732,2988541735,PT
+2988541736,2988541791,FR
2988541792,2988541807,ES
2988541808,2988541863,FR
2988541864,2988541867,GB
@@ -92951,7 +101754,9 @@
2988544768,2988544775,ES
2988544776,2988544835,FR
2988544836,2988544843,ES
-2988544844,2988545391,FR
+2988544844,2988544927,FR
+2988544928,2988544931,DK
+2988544932,2988545391,FR
2988545392,2988545395,DE
2988545396,2988545503,FR
2988545504,2988545507,DE
@@ -93058,7 +101863,9 @@
2988550596,2988550599,PT
2988550600,2988550643,FR
2988550644,2988550647,ES
-2988550648,2988550975,FR
+2988550648,2988550699,FR
+2988550700,2988550703,ES
+2988550704,2988550975,FR
2988550976,2988551039,PL
2988551040,2988551099,FR
2988551100,2988551103,NL
@@ -93243,7 +102050,9 @@
2988559692,2988559695,PL
2988559696,2988559727,FR
2988559728,2988559731,DE
-2988559732,2988560639,FR
+2988559732,2988560587,FR
+2988560588,2988560591,GB
+2988560592,2988560639,FR
2988560640,2988560703,ES
2988560704,2988560711,FR
2988560712,2988560715,PL
@@ -93356,7 +102165,7 @@
2990538752,2991063039,RU
2991063040,2991067135,SE
2991067136,2991071231,DK
-2991071232,2991079423,NO
+2991071232,2991079423,SE
2991079424,2991095807,RU
2991095808,2991112191,AM
2991112192,2991128575,CZ
@@ -93383,7 +102192,8 @@
2991308800,2991325183,BG
2991325184,2991341567,AZ
2991341568,2991357951,MD
-2991357952,2991374335,DE
+2991357952,2991358207,US
+2991358208,2991374335,DE
2991374336,2991390719,RU
2991390720,2991407103,BA
2991407104,2991423487,DE
@@ -93398,7 +102208,7 @@
2991554560,2991570943,GB
2991570944,2991581183,IT
2991581184,2991582207,DE
-2991582208,2991583231,FR
+2991582208,2991583231,IT
2991583232,2991585279,DE
2991585280,2991587327,GB
2991587328,2991718399,SA
@@ -93480,8 +102290,10 @@
2996637696,2996645887,FR
2996645888,2996649983,US
2996649984,2996656639,RO
-2996656640,2996657151,DE
-2996657152,2996666367,RO
+2996656640,2996657151,NL
+2996657152,2996658175,RO
+2996658176,2996659199,AT
+2996659200,2996666367,RO
2996666368,2996682751,RU
2996682752,2996699135,DK
2996699136,2996764671,UA
@@ -93581,7 +102393,7 @@
2997536512,2997536767,NL
2997536768,2997537791,GL
2997537792,2997546495,RU
-2997546496,2997547519,GI
+2997546496,2997547519,FI
2997547520,2997551103,RU
2997551104,2997555199,AU
2997555200,2997557247,SG
@@ -93691,7 +102503,9 @@
3000240128,3000242175,RU
3000242176,3000244223,AT
3000244224,3000246271,PL
-3000246272,3000247295,DE
+3000246272,3000246527,DE
+3000246528,3000246783,US
+3000246784,3000247295,DE
3000247296,3000248319,RU
3000248320,3000252415,PL
3000252416,3000254463,RO
@@ -93825,9 +102639,9 @@
3000647680,3000651775,UA
3000651776,3000664063,RU
3000664064,3000668159,RO
-3000668160,3000668671,GB
-3000668672,3000668927,US
-3000668928,3000669183,GB
+3000668160,3000668415,DE
+3000668416,3000668671,GB
+3000668672,3000669183,US
3000669184,3000670207,IT
3000670208,3000671231,SE
3000671232,3000672255,RU
@@ -93925,12 +102739,13 @@
3001942016,3001943039,AT
3001943040,3001944063,FR
3001944064,3001945087,GB
-3001945088,3001946111,BZ
+3001945088,3001945599,NL
+3001945600,3001946111,BZ
3001946112,3001950207,RU
3001950208,3001954303,CZ
3001954304,3001958399,IT
3001958400,3001962495,KZ
-3001962496,3001966591,GB
+3001962496,3001966591,US
3001966592,3001970687,NL
3001970688,3001974783,RU
3001974784,3001982975,GB
@@ -93940,6 +102755,12 @@
3001995264,3001999359,HU
3001999360,3002003455,DE
3002003456,3002011647,PL
+3002011648,3002012671,NL
+3002012672,3002012927,BA
+3002012928,3002013183,UA
+3002013184,3002013695,HK
+3002013696,3002014719,GR
+3002014720,3002015743,LT
3002015744,3002019839,IT
3002019840,3002021271,NL
3002021272,3002021279,MT
@@ -94001,8 +102822,7 @@
3002673152,3002675199,GB
3002675200,3002677247,DK
3002677248,3002683391,RU
-3002683392,3002684415,DE
-3002684416,3002685439,CH
+3002683392,3002685439,DE
3002685440,3002687487,PL
3002687488,3002688511,GB
3002688512,3002689535,NL
@@ -94208,7 +103028,9 @@
3005480960,3005874175,AR
3005874176,3005894143,PA
3005894144,3005894911,CO
-3005894912,3005895935,PA
+3005894912,3005895167,PA
+3005895168,3005895423,CO
+3005895424,3005895935,PA
3005895936,3005896191,CO
3005896192,3005896703,PA
3005896704,3005896959,CO
@@ -94216,11 +103038,11 @@
3005897472,3005897727,CO
3005897728,3005897983,PA
3005897984,3005898239,CO
-3005898240,3005898495,PA
-3005898496,3005899775,CO
-3005899776,3005900543,PA
-3005900544,3005900799,CO
-3005900800,3005901567,PA
+3005898240,3005898751,PA
+3005898752,3005899775,CO
+3005899776,3005900287,PA
+3005900288,3005901055,CO
+3005901056,3005901567,PA
3005901568,3005901823,CO
3005901824,3005902079,PA
3005902080,3005902335,CO
@@ -94241,7 +103063,8 @@
3005912576,3005913855,PA
3005913856,3005914111,CO
3005914112,3005914623,PA
-3005914624,3005915135,CO
+3005914624,3005914879,CO
+3005914880,3005915135,PA
3005915136,3005918207,AR
3005918208,3005919231,CO
3005919232,3005923327,AR
@@ -94262,9 +103085,7 @@
3006284544,3006284799,CR
3006284800,3006285567,PA
3006285568,3006286079,CR
-3006286080,3006286335,PA
-3006286336,3006286591,CR
-3006286592,3006286847,PA
+3006286080,3006286847,PA
3006286848,3006287359,CR
3006287360,3006287871,PA
3006287872,3006288383,CR
@@ -94276,8 +103097,8 @@
3006290432,3006291455,CR
3006291456,3006308351,PA
3006308352,3006308863,CR
-3006308864,3006309631,PA
-3006309632,3006310143,CR
+3006308864,3006309375,PA
+3006309376,3006310143,CR
3006310144,3006310655,PA
3006310656,3006311167,CR
3006311168,3006311935,PA
@@ -94290,17 +103111,13 @@
3006314240,3006314751,CR
3006314752,3006315519,PA
3006315520,3006316543,CR
-3006316544,3006320639,PA
-3006320640,3006320895,CR
-3006320896,3006321151,PA
+3006316544,3006321151,PA
3006321152,3006321407,CR
3006321408,3006321663,PA
3006321664,3006321919,CR
3006321920,3006323967,PA
3006323968,3006324735,CR
-3006324736,3006328831,PA
-3006328832,3006329087,NI
-3006329088,3006329343,PA
+3006324736,3006329343,PA
3006329344,3006329599,NI
3006329600,3006330623,PA
3006330624,3006330879,NI
@@ -94503,11 +103320,9 @@
3007172416,3007172447,CL
3007172448,3007172607,BR
3007172608,3007172863,US
-3007172864,3007173023,CL
+3007172864,3007173023,BR
3007173024,3007173055,NZ
-3007173056,3007173059,CL
-3007173060,3007173071,BR
-3007173072,3007173119,CL
+3007173056,3007173119,BR
3007173120,3007173375,US
3007173376,3007173407,NO
3007173408,3007173439,SE
@@ -94589,7 +103404,9 @@
3007285760,3007286015,CR
3007286016,3007286271,PA
3007286272,3007286527,CR
-3007286528,3007287295,PA
+3007286528,3007286783,PA
+3007286784,3007287039,CR
+3007287040,3007287295,PA
3007287296,3007299583,CR
3007299584,3007301631,PA
3007301632,3007305727,AR
@@ -94738,8 +103555,8 @@
3025631744,3025631747,IN
3025631748,3025631767,HK
3025631768,3025631775,IN
-3025631776,3025631855,HK
-3025631856,3025631999,IN
+3025631776,3025631871,HK
+3025631872,3025631999,IN
3025632000,3025632255,HK
3025632256,3025632439,SG
3025632440,3025632447,IN
@@ -94809,7 +103626,9 @@
3025643024,3025643031,HK
3025643032,3025643039,IN
3025643040,3025643071,HK
-3025643072,3025643167,IN
+3025643072,3025643135,IN
+3025643136,3025643143,HK
+3025643144,3025643167,IN
3025643168,3025643199,HK
3025643200,3025647103,IN
3025647104,3025647359,SG
@@ -94852,17 +103671,13 @@
3026069504,3026071551,JP
3026071552,3026073599,AU
3026073600,3026075647,CN
-3026075648,3026077951,AF
-3026077952,3026078207,DE
-3026078208,3026078276,AF
+3026075648,3026078276,AF
3026078277,3026078277,DE
3026078278,3026078626,AF
3026078627,3026078627,DE
3026078628,3026078641,AF
3026078642,3026078642,DE
-3026078643,3026078713,AF
-3026078714,3026078714,IT
-3026078715,3026079993,AF
+3026078643,3026079993,AF
3026079994,3026079994,DE
3026079995,3026081023,AF
3026081024,3026081279,DE
@@ -95038,9 +103853,7 @@
3034478592,3034479615,TH
3034479616,3034480639,NZ
3034480640,3034482687,SG
-3034482688,3034483967,AF
-3034483968,3034484479,DE
-3034484480,3034484735,AF
+3034482688,3034484735,AF
3034484736,3034488831,TH
3034488832,3034492927,AU
3034492928,3034497023,JP
@@ -95070,20 +103883,7 @@
3035207680,3035209727,ID
3035209728,3035217919,HK
3035217920,3035234303,KR
-3035234304,3035237375,BD
-3035237376,3035238399,SA
-3035238400,3035250687,BD
-3035250688,3035251711,SA
-3035251712,3035254783,BD
-3035254784,3035256831,SA
-3035256832,3035260927,BD
-3035260928,3035271167,SA
-3035271168,3035273215,BD
-3035273216,3035277311,SA
-3035277312,3035279359,BD
-3035279360,3035285503,SA
-3035285504,3035291647,BD
-3035291648,3035299839,SA
+3035234304,3035299839,SA
3035299840,3035316223,JP
3035316224,3035324415,CN
3035324416,3035326463,JP
@@ -95314,7 +104114,9 @@
3050700816,3050701055,BR
3050701056,3050701311,DE
3050701312,3050701327,IE
-3050701328,3050701567,BR
+3050701328,3050701447,BR
+3050701448,3050701455,US
+3050701456,3050701567,BR
3050701568,3050701823,DE
3050701824,3050701839,SG
3050701840,3050702079,BR
@@ -95341,9 +104143,7 @@
3050705424,3050705663,BR
3050705664,3050705919,SG
3050705920,3050705935,AU
-3050705936,3050705983,BR
-3050705984,3050706047,US
-3050706048,3050706175,BR
+3050705936,3050706175,BR
3050706176,3050706431,US
3050706432,3050706447,NL
3050706448,3050706687,BR
@@ -95367,7 +104167,9 @@
3050709520,3050709759,BR
3050709760,3050710015,NL
3050710016,3050710031,ES
-3050710032,3050710271,BR
+3050710032,3050710087,BR
+3050710088,3050710095,US
+3050710096,3050710271,BR
3050710272,3050710527,US
3050710528,3050710543,FR
3050710544,3050710783,BR
@@ -95381,7 +104183,9 @@
3050711680,3050711807,BR
3050711808,3050712063,US
3050712064,3050712079,FR
-3050712080,3050712319,BR
+3050712080,3050712135,BR
+3050712136,3050712143,US
+3050712144,3050712319,BR
3050712320,3050712575,US
3050712576,3050712591,PL
3050712592,3050712831,BR
@@ -95738,8 +104542,7 @@
3057026048,3057027071,US
3057027072,3057028095,TW
3057028096,3057029119,ID
-3057029120,3057029375,PG
-3057029376,3057030143,SG
+3057029120,3057030143,SG
3057030144,3057031167,IN
3057031168,3057032191,BD
3057032192,3057033215,NP
@@ -95791,6 +104594,7 @@
3064019968,3064020991,HK
3064020992,3064021503,AU
3064021504,3064021759,KR
+3064021760,3064022015,BD
3064022016,3064023039,HK
3064023040,3064024063,SG
3064024064,3064025087,JP
@@ -95918,14 +104722,13 @@
3081502720,3081764863,CN
3081764864,3081842687,JP
3081842688,3081846783,AU
-3081846784,3081847807,TW
-3081847808,3081848831,KR
-3081848832,3081849032,SG
+3081846784,3081849032,HK
3081849033,3081849034,TW
-3081849035,3081849855,SG
-3081849856,3081850079,HK
+3081849035,3081849855,HK
+3081849856,3081850079,SG
3081850080,3081850111,TW
-3081850112,3081851903,HK
+3081850112,3081850879,SG
+3081850880,3081851903,HK
3081851904,3081852927,JP
3081852928,3081854975,HK
3081854976,3081859071,MN
@@ -95962,25 +104765,133 @@
3088708608,3088709631,NL
3088709632,3088710655,US
3088710656,3088711167,NL
-3088711168,3088785407,US
+3088711168,3088725620,US
+3088725621,3088725622,IN
+3088725623,3088725628,US
+3088725629,3088725632,IN
+3088725633,3088725636,US
+3088725637,3088725640,IN
+3088725641,3088725644,US
+3088725645,3088725648,IN
+3088725649,3088725652,US
+3088725653,3088725656,IN
+3088725657,3088725660,US
+3088725661,3088725664,IN
+3088725665,3088725668,US
+3088725669,3088725672,IN
+3088725673,3088735061,US
+3088735062,3088735063,HK
+3088735064,3088735148,US
+3088735149,3088735151,HK
+3088735152,3088735155,US
+3088735156,3088735159,HK
+3088735160,3088735163,US
+3088735164,3088735167,HK
+3088735168,3088735171,US
+3088735172,3088735175,HK
+3088735176,3088735179,US
+3088735180,3088735183,HK
+3088735184,3088735187,US
+3088735188,3088735191,HK
+3088735192,3088735195,US
+3088735196,3088735199,HK
+3088735200,3088735203,US
+3088735204,3088735205,HK
+3088735206,3088753201,US
+3088753202,3088753208,IN
+3088753209,3088753212,US
+3088753213,3088753216,IN
+3088753217,3088753222,US
+3088753223,3088753223,IN
+3088753224,3088753287,US
+3088753288,3088753289,IN
+3088753290,3088753295,US
+3088753296,3088753299,IN
+3088753300,3088753303,US
+3088753304,3088753307,IN
+3088753308,3088753375,US
+3088753376,3088753379,IN
+3088753380,3088753391,US
+3088753392,3088753393,IN
+3088753394,3088785407,US
3088785408,3088786431,NL
3088786432,3088829951,US
3088829952,3088830463,NL
3088830464,3088830975,US
3088830976,3088831487,NL
-3088831488,3088856063,US
+3088831488,3088855811,US
+3088855812,3088855815,BR
+3088855816,3088855819,US
+3088855820,3088855823,BR
+3088855824,3088855827,US
+3088855828,3088855831,BR
+3088855832,3088855835,US
+3088855836,3088855839,BR
+3088855840,3088855843,US
+3088855844,3088855847,BR
+3088855848,3088855851,US
+3088855852,3088855855,BR
+3088855856,3088855859,US
+3088855860,3088855863,BR
+3088855864,3088855867,US
+3088855868,3088855871,BR
+3088855872,3088855875,US
+3088855876,3088855879,BR
+3088855880,3088856063,US
3088856064,3088856575,NL
3088856576,3088857087,US
3088857088,3088857599,NL
3088857600,3088867839,US
3088867840,3088868351,NL
-3088868352,3088869375,US
+3088868352,3088868380,US
+3088868381,3088868383,TH
+3088868384,3088868387,US
+3088868388,3088868391,TH
+3088868392,3088868395,US
+3088868396,3088868396,TH
+3088868397,3088868545,US
+3088868546,3088868546,TH
+3088868547,3088868547,US
+3088868548,3088868549,TH
+3088868550,3088868550,US
+3088868551,3088868551,TH
+3088868552,3088868553,US
+3088868554,3088868554,TH
+3088868555,3088868555,US
+3088868556,3088868557,TH
+3088868558,3088868558,US
+3088868559,3088868559,TH
+3088868560,3088868561,US
+3088868562,3088868562,TH
+3088868563,3088868563,US
+3088868564,3088868565,TH
+3088868566,3088869375,US
3088869376,3088869887,NL
3088869888,3088871423,US
3088871424,3088871935,NL
3088871936,3088888831,US
3088888832,3088889343,NL
-3088889344,3088902143,US
+3088889344,3088898708,US
+3088898709,3088898711,HK
+3088898712,3088898715,US
+3088898716,3088898719,HK
+3088898720,3088898723,US
+3088898724,3088898727,HK
+3088898728,3088898731,US
+3088898732,3088898735,HK
+3088898736,3088898739,US
+3088898740,3088898743,HK
+3088898744,3088898747,US
+3088898748,3088898751,HK
+3088898752,3088898755,US
+3088898756,3088898759,HK
+3088898760,3088898763,US
+3088898764,3088898767,HK
+3088898768,3088898771,US
+3088898772,3088898775,HK
+3088898776,3088898779,US
+3088898780,3088898780,HK
+3088898781,3088902143,US
3088902144,3088902655,NL
3088902656,3088913663,US
3088913664,3088913919,NL
@@ -95990,13 +104901,103 @@
3089059840,3089063935,NL
3089063936,3090292223,US
3090292224,3090292735,NL
-3090292736,3090325503,US
+3090292736,3090306428,US
+3090306429,3090306432,SG
+3090306433,3090306436,US
+3090306437,3090306440,SG
+3090306441,3090306444,US
+3090306445,3090306448,SG
+3090306449,3090306452,US
+3090306453,3090306456,SG
+3090306457,3090306460,US
+3090306461,3090306464,SG
+3090306465,3090306468,US
+3090306469,3090306472,SG
+3090306473,3090306476,US
+3090306477,3090306480,SG
+3090306481,3090306484,US
+3090306485,3090306485,SG
+3090306486,3090306492,US
+3090306493,3090306496,SG
+3090306497,3090306500,US
+3090306501,3090306504,SG
+3090306505,3090306508,US
+3090306509,3090306512,SG
+3090306513,3090306516,US
+3090306517,3090306520,SG
+3090306521,3090306524,US
+3090306525,3090306528,SG
+3090306529,3090306532,US
+3090306533,3090306536,SG
+3090306537,3090306540,US
+3090306541,3090306544,SG
+3090306545,3090306901,US
+3090306902,3090306903,HK
+3090306904,3090306907,US
+3090306908,3090306911,HK
+3090306912,3090306915,US
+3090306916,3090306919,HK
+3090306920,3090306923,US
+3090306924,3090306927,HK
+3090306928,3090306931,US
+3090306932,3090306935,HK
+3090306936,3090306947,US
+3090306948,3090306951,HK
+3090306952,3090306955,US
+3090306956,3090306959,HK
+3090306960,3090306963,US
+3090306964,3090306995,HK
+3090306996,3090306996,US
+3090306997,3090307000,HK
+3090307001,3090325503,US
3090325504,3090329599,NL
-3090329600,3090388223,US
+3090329600,3090345396,US
+3090345397,3090345399,AU
+3090345400,3090345403,US
+3090345404,3090345407,AU
+3090345408,3090345411,US
+3090345412,3090345415,AU
+3090345416,3090345419,US
+3090345420,3090345423,AU
+3090345424,3090345427,US
+3090345428,3090345429,AU
+3090345430,3090345433,US
+3090345434,3090345437,AU
+3090345438,3090345441,US
+3090345442,3090345445,AU
+3090345446,3090345449,US
+3090345450,3090345453,AU
+3090345454,3090345457,US
+3090345458,3090345458,AU
+3090345459,3090353923,US
+3090353924,3090353936,HK
+3090353937,3090353937,US
+3090353938,3090353945,HK
+3090353946,3090353946,US
+3090353947,3090353954,HK
+3090353955,3090353986,US
+3090353987,3090353987,HK
+3090353988,3090388223,US
3090388224,3090388479,NL
3090388480,3090389503,US
3090389504,3090389631,CA
-3090389632,3090401791,US
+3090389632,3090401070,US
+3090401071,3090401071,JP
+3090401072,3090401075,US
+3090401076,3090401079,JP
+3090401080,3090401083,US
+3090401084,3090401086,JP
+3090401087,3090401107,US
+3090401108,3090401111,JP
+3090401112,3090401115,US
+3090401116,3090401135,JP
+3090401136,3090401139,US
+3090401140,3090401142,JP
+3090401143,3090401155,US
+3090401156,3090401175,JP
+3090401176,3090401204,US
+3090401205,3090401208,JP
+3090401209,3090401791,US
3090401792,3090402047,IN
3090402048,3090415103,US
3090415104,3090415615,NL
@@ -96008,11 +105009,43 @@
3091976192,3091980287,CA
3091980288,3092381695,US
3092381696,3092447231,TH
-3092447232,3092572671,US
+3092447232,3092555371,US
+3092555372,3092555374,AE
+3092555375,3092555379,US
+3092555380,3092555382,AE
+3092555383,3092555388,US
+3092555389,3092555391,AE
+3092555392,3092555395,US
+3092555396,3092555397,AE
+3092555398,3092555398,US
+3092555399,3092555399,AE
+3092555400,3092572671,US
3092572672,3092573183,NL
3092573184,3092573695,US
3092573696,3092573951,AU
-3092573952,3092623359,US
+3092573952,3092574081,US
+3092574082,3092574083,HK
+3092574084,3092574101,US
+3092574102,3092574103,HK
+3092574104,3092574107,US
+3092574108,3092574138,HK
+3092574139,3092575100,US
+3092575101,3092575102,CA
+3092575103,3092575106,US
+3092575107,3092575110,CA
+3092575111,3092575114,US
+3092575115,3092575118,CA
+3092575119,3092575122,US
+3092575123,3092575126,CA
+3092575127,3092575130,US
+3092575131,3092575134,CA
+3092575135,3092575138,US
+3092575139,3092575142,CA
+3092575143,3092575146,US
+3092575147,3092575150,CA
+3092575151,3092575154,US
+3092575155,3092575157,CA
+3092575158,3092623359,US
3092623360,3092627455,NL
3092627456,3092640255,US
3092640256,3092641791,NL
@@ -96035,7 +105068,11 @@
3092701184,3092702207,NL
3092702208,3092704255,US
3092704256,3092705279,NL
-3092705280,3092754431,US
+3092705280,3092707971,US
+3092707972,3092707993,SG
+3092707994,3092707994,US
+3092707995,3092707995,SG
+3092707996,3092754431,US
3092754432,3092758527,NL
3092758528,3093168127,US
3093168128,3093200895,CA
@@ -96068,9 +105105,7 @@
3093943786,3093943786,CZ
3093943787,3093945989,US
3093945990,3093945990,AT
-3093945991,3093960639,US
-3093960640,3093960655,GB
-3093960656,3093966239,US
+3093945991,3093966239,US
3093966240,3093966243,GB
3093966244,3094020095,US
3094020096,3094022919,CA
@@ -96079,19 +105114,11 @@
3094026624,3094026631,US
3094026632,3094028655,CA
3094028656,3094028663,US
-3094028664,3094029119,CA
-3094029120,3094029151,US
-3094029152,3094032759,CA
+3094028664,3094032759,CA
3094032760,3094032767,GI
-3094032768,3094036383,CA
-3094036384,3094036415,US
-3094036416,3094045663,CA
+3094032768,3094045663,CA
3094045664,3094045671,CO
-3094045672,3094050151,CA
-3094050152,3094050159,US
-3094050160,3094054655,CA
-3094054656,3094054663,MY
-3094054664,3094055359,CA
+3094045672,3094055359,CA
3094055360,3094055367,IN
3094055368,3094068671,CA
3094068672,3094068679,US
@@ -96184,13 +105211,7 @@
3098493752,3098493759,CA
3098493760,3098496943,US
3098496944,3098496951,CA
-3098496952,3100909567,US
-3100909568,3100911615,PR
-3100911616,3100932095,US
-3100932096,3100934143,PR
-3100934144,3100950527,US
-3100950528,3100952575,PR
-3100952576,3103784959,US
+3098496952,3103784959,US
3103850496,3103850751,RU
3103850752,3103851007,PS
3103851008,3103851519,FR
@@ -96433,7 +105454,7 @@
3104038912,3104039935,PL
3104039936,3104040959,LT
3104040960,3104041983,DE
-3104041984,3104043007,ES
+3104041984,3104043007,US
3104043008,3104044031,RU
3104044032,3104045055,HU
3104045056,3104046079,GB
@@ -96761,7 +105782,7 @@
3104368640,3104369663,KZ
3104369664,3104370687,CZ
3104370688,3104372735,ES
-3104372736,3104373759,NO
+3104372736,3104373759,UA
3104373760,3104374783,FR
3104374784,3104375807,SE
3104375808,3104376831,DK
@@ -96857,7 +105878,7 @@
3104465920,3104466943,GB
3104467968,3104468991,DE
3104468992,3104470015,SA
-3104470016,3104471039,IE
+3104470016,3104471039,GB
3104471040,3104472063,PL
3104472064,3104473087,HU
3104473088,3104474111,RU
@@ -97034,7 +106055,7 @@
3104644096,3104645119,DE
3104645120,3104646143,RU
3104646144,3104647167,FR
-3104647168,3104648191,GB
+3104647168,3104648191,MT
3104648192,3104649215,RU
3104649216,3104650239,GB
3104650240,3104651263,SI
@@ -97051,13 +106072,13 @@
3104661504,3104662527,SE
3104662528,3104663551,FR
3104663552,3104664063,GB
-3104664064,3104664263,CH
-3104664264,3104664271,PL
-3104664272,3104664319,CH
+3104664064,3104664255,PL
+3104664256,3104664263,CH
+3104664264,3104664319,PL
3104664320,3104665599,GB
3104665600,3104668671,RU
3104668672,3104669695,NO
-3104669696,3104670719,FR
+3104669696,3104670719,GB
3104670720,3104672767,RU
3104672768,3104673791,GB
3104673792,3104674815,PL
@@ -97163,7 +106184,9 @@
3104777216,3104778239,RU
3104778240,3104779263,TR
3104779264,3104780287,PL
-3104780288,3104782335,FR
+3104780288,3104781583,FR
+3104781584,3104781587,GB
+3104781588,3104782335,FR
3104782336,3104783359,NL
3104783360,3104784383,RU
3104784384,3104785407,BA
@@ -97224,13 +106247,15 @@
3104840704,3104841215,RU
3104841216,3104841727,UA
3104841728,3104843775,PL
-3104843776,3104844799,GB
-3104844800,3104846847,FR
+3104843776,3104845055,GB
+3104845056,3104846847,FR
3104846848,3104847871,AT
3104847872,3104848895,RU
3104848896,3104849919,DE
3104849920,3104850943,RU
-3104850944,3104851967,JE
+3104850944,3104851455,JE
+3104851456,3104851711,GB
+3104851712,3104851967,JE
3104851968,3104852991,DE
3104852992,3104854015,AT
3104854016,3104855039,GI
@@ -97307,7 +106332,7 @@
3104923648,3104924671,UA
3104924672,3104925695,CZ
3104925696,3104926719,IT
-3104926720,3104927743,FR
+3104926720,3104927743,CH
3104927744,3104928767,TR
3104928768,3104929791,CZ
3104929792,3104930815,DE
@@ -97492,7 +106517,8 @@
3105098752,3105099775,SE
3105099776,3105100799,FR
3105100800,3105101823,PL
-3105101824,3105102847,IQ
+3105101824,3105102335,AE
+3105102336,3105102847,IQ
3105102848,3105103871,HR
3105103872,3105104895,GB
3105104896,3105105919,CY
@@ -97586,7 +106612,9 @@
3105199104,3105200127,PL
3105200128,3105201151,FR
3105201152,3105202175,RU
-3105202176,3105203199,CZ
+3105202176,3105203103,CZ
+3105203104,3105203135,HU
+3105203136,3105203199,CZ
3105203200,3105204223,DE
3105204224,3105205247,NL
3105205248,3105206271,IT
@@ -97918,9 +106946,7 @@
3105524736,3105525759,IT
3105525760,3105526783,TR
3105526784,3105527807,GB
-3105527808,3105528063,NL
-3105528064,3105528319,US
-3105528320,3105528831,NL
+3105527808,3105528831,NL
3105528832,3105529855,DE
3105529856,3105530879,LU
3105530880,3105531903,NO
@@ -98007,12 +107033,7 @@
3105614848,3105615871,NL
3105615872,3105616895,SE
3105616896,3105617919,GB
-3105617920,3105618175,DE
-3105618176,3105618441,NL
-3105618442,3105618442,DE
-3105618443,3105618443,NL
-3105618444,3105618444,DE
-3105618445,3105618481,NL
+3105617920,3105618481,NL
3105618482,3105618484,IT
3105618485,3105618515,NL
3105618516,3105618517,US
@@ -98216,9 +107237,7 @@
3105814528,3105815551,JO
3105815552,3105816575,BE
3105816576,3105817599,FR
-3105817600,3105818111,DE
-3105818112,3105818367,US
-3105818368,3105818623,DE
+3105817600,3105818623,DE
3105818624,3105819647,NL
3105819648,3105820671,GB
3105820672,3105820927,NL
@@ -98454,7 +107473,8 @@
3106027600,3106027615,IT
3106027616,3106027631,NL
3106027632,3106029567,GB
-3106029568,3106030079,NL
+3106029568,3106029823,US
+3106029824,3106030079,NL
3106030080,3106030335,KZ
3106030336,3106031615,NL
3106031616,3106032639,AZ
@@ -98486,9 +107506,9 @@
3106058240,3106059263,NL
3106059264,3106060287,RU
3106060288,3106061311,DE
-3106061312,3106062335,NL
+3106061312,3106062335,IE
3106062336,3106063359,ES
-3106063360,3106064383,DE
+3106063360,3106064383,AT
3106064384,3106065407,NL
3106065408,3106066431,IT
3106066432,3106067455,GB
@@ -98599,6 +107619,7 @@
3106169856,3106170879,NL
3106170880,3106171903,RU
3106171904,3106172927,GB
+3106172928,3106173951,NL
3106173952,3106175999,DE
3106176000,3106177023,NO
3106177024,3106178047,IT
@@ -98631,6 +107652,7 @@
3106206720,3106207743,GE
3106207744,3106208767,GB
3106208768,3106209791,RO
+3106209792,3106210815,GB
3106210816,3106211839,NL
3106211840,3106212863,BE
3106212864,3106213887,PS
@@ -98647,7 +107669,7 @@
3106224128,3106226175,RU
3106226176,3106228223,NL
3106228224,3106229247,CH
-3106229248,3106230271,GG
+3106229248,3106230271,GB
3106230272,3106231295,IT
3106231296,3106232319,DK
3106232320,3106233343,IQ
@@ -98711,6 +107733,7 @@
3106271232,3106272255,SK
3106272256,3106273279,NL
3106273280,3106274303,DE
+3106274304,3106275327,EE
3106275328,3106276351,FI
3106276352,3106277375,AT
3106277376,3106278399,DE
@@ -98891,8 +107914,7 @@
3106440708,3106441215,DE
3106441216,3106442239,HU
3106442240,3106442495,GG
-3106442496,3106443007,FR
-3106443008,3106443263,GB
+3106442496,3106443263,FR
3106443264,3106445311,ES
3106445312,3106446335,RU
3106446336,3106447359,AZ
@@ -98914,6 +107936,10 @@
3106462720,3106463743,IT
3106463744,3106464767,FR
3106464768,3106465791,PL
+3106465792,3106466047,FR
+3106466048,3106466303,NL
+3106466304,3106466559,DE
+3106466560,3106466815,RO
3106466816,3106467839,EE
3106467840,3106468863,IR
3106468864,3106470911,DE
@@ -98963,7 +107989,7 @@
3106491392,3106492415,CH
3106492416,3106493439,PL
3106493440,3106494463,SY
-3106494464,3106495487,IT
+3106494464,3106495487,SE
3106495488,3106496511,PL
3106496512,3106497535,ES
3106497536,3106498559,RU
@@ -99023,6 +108049,7 @@
3106558976,3106559999,NL
3106560000,3106562047,RU
3106562048,3106563071,TJ
+3106563072,3106564095,FR
3106564096,3106565119,ES
3106565120,3106566143,RU
3106566144,3106568191,FR
@@ -99203,11 +108230,7 @@
3106744320,3106745343,SM
3106745344,3106746367,NL
3106746368,3106747391,DK
-3106747392,3106747647,BE
-3106747648,3106747790,GB
-3106747791,3106747791,DE
-3106747792,3106747903,GB
-3106747904,3106748415,BE
+3106747392,3106748415,BE
3106748416,3106749439,CZ
3106749440,3106750463,RU
3106750464,3106751487,BG
@@ -99322,9 +108345,7 @@
3106850816,3106851839,GB
3106851840,3106852863,PL
3106852864,3106853887,GB
-3106853888,3106854235,NL
-3106854236,3106854237,GB
-3106854238,3106854399,NL
+3106853888,3106854399,NL
3106854400,3106854911,CH
3106854912,3106855935,IR
3106855936,3106856959,UA
@@ -99601,7 +108622,7 @@
3107132416,3107133439,RU
3107133440,3107134463,CY
3107134464,3107135487,CZ
-3107135488,3107136511,DE
+3107135488,3107136511,SE
3107136512,3107137535,TR
3107137536,3107138559,IR
3107138560,3107139583,ES
@@ -99641,6 +108662,7 @@
3107166208,3107167231,AE
3107167232,3107168255,RU
3107168256,3107169279,ES
+3107169280,3107170303,NL
3107170304,3107171327,IT
3107171328,3107172351,GB
3107172352,3107173375,FR
@@ -99744,9 +108766,7 @@
3107267584,3107268607,IT
3107268608,3107270655,DE
3107270656,3107271679,NL
-3107271680,3107271680,AE
-3107271681,3107271935,CY
-3107271936,3107272703,AE
+3107271680,3107272703,AE
3107272704,3107273727,GB
3107273728,3107274751,TR
3107274752,3107275775,SE
@@ -100092,7 +109112,9 @@
3107565568,3107566591,AT
3107566592,3107567615,FI
3107567616,3107568639,DE
-3107568640,3107569663,GB
+3107568640,3107569151,GB
+3107569152,3107569407,US
+3107569408,3107569663,GB
3107569664,3107571711,ES
3107571712,3107572735,IR
3107572736,3107573759,ES
@@ -100190,6 +109212,7 @@
3107670016,3107671039,TR
3107671040,3107672063,NL
3107672064,3107673087,IT
+3107673088,3107674111,HR
3107674112,3107675135,PL
3107675136,3107676159,GB
3107676160,3107677183,IT
@@ -100459,6 +109482,7 @@
3107951616,3107952639,CH
3107952640,3107953663,NL
3107953664,3107954687,SK
+3107954688,3107955711,IT
3107955712,3107956735,NL
3107956736,3107957759,IT
3107957760,3107958783,FR
@@ -100560,7 +109584,7 @@
3108046848,3108047871,HU
3108047872,3108050943,RU
3108050944,3108051967,GB
-3108051968,3108052991,FR
+3108051968,3108054015,FR
3108054016,3108055039,LV
3108055040,3108056063,GB
3108056064,3108057087,IT
@@ -100575,7 +109599,7 @@
3108064256,3108065279,CZ
3108065280,3108066303,FR
3108066304,3108067327,GB
-3108067328,3108068351,DE
+3108067328,3108068351,AT
3108068352,3108069375,CZ
3108069376,3108070399,FR
3108070400,3108071423,GB
@@ -100650,7 +109674,7 @@
3108136960,3108137215,NL
3108137216,3108137471,LU
3108137472,3108137983,NL
-3108137984,3108139007,RO
+3108137984,3108139007,CH
3108139008,3108141055,GB
3108141056,3108142079,PL
3108142080,3108143103,TR
@@ -100704,7 +109728,8 @@
3108193280,3108194303,PL
3108194304,3108195327,FR
3108195328,3108195328,ES
-3108195329,3108196351,NO
+3108195329,3108195839,NO
+3108195840,3108196351,ES
3108196352,3108197375,FI
3108197376,3108198399,IS
3108198400,3108199423,FR
@@ -100744,6 +109769,7 @@
3108232192,3108233215,DE
3108233216,3108234239,NL
3108234240,3108235263,AT
+3108235264,3108236287,GB
3108236288,3108237311,IT
3108237312,3108238335,LT
3108238336,3108239359,RU
@@ -100803,7 +109829,8 @@
3108286464,3108287487,IT
3108287488,3108288511,NL
3108288512,3108289535,BR
-3108289536,3108290047,RO
+3108289536,3108289791,RO
+3108289792,3108290047,ES
3108290048,3108291583,IT
3108291584,3108292607,NL
3108292608,3108293631,GB
@@ -101330,6 +110357,7 @@
3108838400,3108839423,GE
3108839424,3108840447,IT
3108840448,3108841471,GR
+3108841472,3108842495,TR
3108842496,3108843519,LI
3108843520,3108844543,IT
3108844544,3108845567,LI
@@ -101345,7 +110373,9 @@
3108852736,3108853759,IT
3108853760,3108854783,TR
3108854784,3108855807,CH
-3108855808,3108856831,LT
+3108855808,3108856063,LT
+3108856064,3108856319,NL
+3108856320,3108856831,LT
3108856832,3108857855,UA
3108857856,3108858879,DE
3108858880,3108859903,AT
@@ -101388,7 +110418,7 @@
3108893696,3108894719,FI
3108894720,3108894975,IL
3108894976,3108895231,DE
-3108895232,3108895743,US
+3108895232,3108895743,GB
3108895744,3108896767,AT
3108896768,3108897791,ES
3108897792,3108899839,GB
@@ -101470,14 +110500,14 @@
3108962304,3108963327,AM
3108963328,3108964351,ES
3108964352,3108965375,NL
-3108965376,3108966399,RU
+3108965376,3108966399,TR
3108966400,3108967423,BY
3108967424,3108968447,ES
3108968448,3108969471,DE
3108969472,3108970495,ES
3108970496,3108971519,PL
3108971520,3108972543,ES
-3108972544,3108973567,NL
+3108972544,3108973567,MD
3108973568,3108974591,DE
3108974592,3108975615,BR
3108975616,3108976639,IT
@@ -101530,9 +110560,7 @@
3109022720,3109023743,RU
3109023744,3109024767,PL
3109024768,3109025791,LT
-3109025792,3109026493,IT
-3109026494,3109026526,SA
-3109026527,3109026815,IT
+3109025792,3109026815,IT
3109026816,3109027839,CH
3109027840,3109028863,BG
3109028864,3109029887,ES
@@ -101562,7 +110590,8 @@
3109053440,3109054463,IR
3109054464,3109055487,JO
3109055488,3109056511,IL
-3109056512,3109058559,GB
+3109056512,3109057535,RO
+3109057536,3109058559,GB
3109058560,3109059583,DE
3109059584,3109060095,LU
3109060096,3109060351,CY
@@ -101634,22 +110663,30 @@
3109124096,3109126143,ES
3109126144,3109127167,LV
3109127168,3109128191,ES
-3109128192,3109128215,GB
+3109128192,3109128207,NL
+3109128208,3109128215,GB
3109128216,3109128223,AT
3109128224,3109128231,DK
3109128232,3109128239,SE
-3109128240,3109128503,GB
+3109128240,3109128319,NL
+3109128320,3109128383,GB
+3109128384,3109128463,NL
+3109128464,3109128471,DK
+3109128472,3109128479,SE
+3109128480,3109128487,IE
+3109128488,3109128495,DK
+3109128496,3109128503,SE
3109128504,3109128511,IE
-3109128512,3109128727,GB
+3109128512,3109128719,NL
+3109128720,3109128727,GB
3109128728,3109128735,AT
3109128736,3109128743,DK
3109128744,3109128751,SE
3109128752,3109128759,IE
3109128760,3109128760,IT
-3109128761,3109128831,GB
+3109128761,3109128831,NL
3109128832,3109128895,BE
-3109128896,3109128959,GB
-3109128960,3109128975,NL
+3109128896,3109128975,NL
3109128976,3109128983,DK
3109128984,3109128991,SE
3109128992,3109128999,IT
@@ -101658,7 +110695,8 @@
3109129016,3109129023,IE
3109129024,3109129215,NL
3109129216,3109130239,LB
-3109130240,3109131263,RU
+3109130240,3109130751,BR
+3109130752,3109131263,RU
3109131264,3109132287,DE
3109132288,3109133311,TR
3109133312,3109134335,FR
@@ -101712,8 +110750,8 @@
3109183488,3109184255,LB
3109184256,3109184511,GB
3109184512,3109185535,CH
-3109185536,3109186559,RS
-3109186560,3109187327,XK
+3109185536,3109187071,RS
+3109187072,3109187327,XK
3109187328,3109187583,RS
3109187584,3109188607,IT
3109188608,3109189631,SA
@@ -101830,7 +110868,9 @@
3109305856,3109306111,DK
3109306112,3109306367,LT
3109306368,3109307391,RO
-3109307392,3109308415,IQ
+3109307392,3109307903,IQ
+3109307904,3109308159,IT
+3109308160,3109308415,IQ
3109308416,3109309439,NL
3109309440,3109310463,CH
3109310464,3109311487,DE
@@ -101861,6 +110901,7 @@
3109337088,3109339135,RU
3109339136,3109340159,CH
3109340160,3109341183,NL
+3109341184,3109342207,FR
3109342208,3109343231,ES
3109343232,3109344255,CH
3109344256,3109345279,SE
@@ -102020,7 +111061,7 @@
3109502976,3109503999,FR
3109504000,3109505023,IT
3109505024,3109506047,DE
-3109506048,3109507071,MD
+3109506048,3109507071,IT
3109507072,3109508095,DK
3109508096,3109509119,ES
3109509120,3109511167,FR
@@ -102037,7 +111078,7 @@
3109521408,3109522431,PL
3109522432,3109523455,CZ
3109523456,3109524479,PL
-3109524480,3109525503,UA
+3109524480,3109525503,US
3109525504,3109527551,NL
3109527552,3109528575,IL
3109528576,3109529599,SE
@@ -102117,7 +111158,8 @@
3109601280,3109602303,GB
3109602304,3109603327,FR
3109603328,3109604351,ES
-3109604352,3109605375,IT
+3109604352,3109605119,IT
+3109605120,3109605375,AT
3109605376,3109606399,RU
3109606400,3109607423,DE
3109607424,3109608447,GB
@@ -102138,7 +111180,8 @@
3109624832,3109625855,ES
3109625856,3109626879,GB
3109626880,3109627903,DE
-3109627904,3109628927,RU
+3109627904,3109628415,IL
+3109628416,3109628927,DK
3109628928,3109629951,IT
3109629952,3109630975,LV
3109630976,3109631999,FI
@@ -102190,8 +111233,10 @@
3109672960,3109673215,US
3109673216,3109673459,GB
3109673460,3109673461,NO
-3109673462,3109673471,GB
-3109673472,3109673695,ID
+3109673462,3109673463,GB
+3109673464,3109673471,NO
+3109673472,3109673599,IN
+3109673600,3109673695,ID
3109673696,3109673727,GB
3109673728,3109673983,AU
3109673984,3109675007,FR
@@ -102323,7 +111368,9 @@
3109804032,3109805055,GB
3109805056,3109807103,FR
3109807104,3109808127,ES
-3109808128,3109809151,RE
+3109808128,3109808383,RE
+3109808384,3109808639,GP
+3109808640,3109809151,RE
3109809152,3109810175,GB
3109810176,3109811199,IT
3109811200,3109812223,DE
@@ -102523,10 +111570,8 @@
3109962752,3109963775,PL
3109963776,3109964799,SE
3109964800,3109965823,GI
-3109965824,3109966335,MD
-3109966336,3109966591,IT
-3109966592,3109966847,MD
-3109966848,3109967871,RU
+3109965824,3109966847,IT
+3109966848,3109967871,NL
3109967872,3109968895,IT
3109968896,3109969919,NL
3109969920,3109970943,IR
@@ -102607,6 +111652,7 @@
3110038528,3110039551,GB
3110039552,3110040575,DE
3110040576,3110041599,CZ
+3110041600,3110042623,LT
3110042624,3110043647,ES
3110043648,3110044671,DE
3110044672,3110046719,IT
@@ -102671,7 +111717,9 @@
3110107136,3110108159,PL
3110108160,3110109183,AZ
3110109184,3110110207,IT
-3110110208,3110111231,RU
+3110110208,3110110463,NL
+3110110464,3110110719,DE
+3110110720,3110111231,IL
3110111232,3110112255,TR
3110112256,3110113279,NL
3110113280,3110114303,SE
@@ -102769,7 +111817,8 @@
3110201344,3110202367,IT
3110202368,3110203391,IE
3110203392,3110204415,DE
-3110204416,3110205439,BE
+3110204416,3110204671,FR
+3110204672,3110205439,BE
3110205440,3110206463,EE
3110206464,3110207487,RU
3110207488,3110208511,BA
@@ -102838,8 +111887,7 @@
3110278144,3110279167,TR
3110279168,3110279679,GB
3110279680,3110279695,ES
-3110279696,3110279743,NL
-3110279744,3110279967,GB
+3110279696,3110279967,GB
3110279968,3110279983,DE
3110279984,3110280191,GB
3110280192,3110281215,RU
@@ -102875,7 +111923,7 @@
3110307684,3110307684,BR
3110307685,3110307839,BY
3110307840,3110308863,IE
-3110308864,3110309887,GB
+3110308864,3110309887,RU
3110309888,3110310911,DE
3110310912,3110311935,FR
3110311936,3110315007,UA
@@ -102887,6 +111935,7 @@
3110320128,3110321151,ES
3110321152,3110322175,SE
3110322176,3110323199,PL
+3110323200,3110324223,TR
3110324224,3110325247,US
3110325248,3110326271,NL
3110326272,3110327295,DE
@@ -102899,7 +111948,7 @@
3110333440,3110334463,GB
3110334464,3110335487,ES
3110335488,3110336511,GB
-3110336512,3110337535,GE
+3110336512,3110337535,ES
3110337536,3110337791,US
3110337792,3110338047,GB
3110338048,3110338559,US
@@ -103007,12 +112056,13 @@
3110432768,3110433791,DE
3110433792,3110434815,CH
3110434816,3110435839,GB
-3110435840,3110436095,IS
-3110436096,3110436863,SE
+3110435840,3110436351,IS
+3110436352,3110436863,SE
3110436864,3110437887,PL
3110437888,3110438911,DE
3110438912,3110439935,GE
3110439936,3110440959,SK
+3110440960,3110441983,IT
3110441984,3110443007,GB
3110443008,3110444031,DK
3110444032,3110445055,CH
@@ -103034,6 +112084,7 @@
3110459904,3110460159,US
3110460160,3110460415,IT
3110460416,3110461439,CZ
+3110461440,3110462463,ES
3110462464,3110463487,IR
3110463488,3110464511,PL
3110464512,3110465535,IQ
@@ -103206,7 +112257,9 @@
3110637568,3110638591,GR
3110638592,3110639615,FR
3110639616,3110640639,ES
-3110640640,3110641663,IQ
+3110640640,3110641129,IQ
+3110641130,3110641130,IT
+3110641131,3110641663,IQ
3110641664,3110642687,DE
3110642688,3110643711,ES
3110643712,3110644735,LU
@@ -103222,7 +112275,7 @@
3110650880,3110651903,RO
3110651904,3110652927,GG
3110652928,3110653951,DE
-3110653952,3110654975,CZ
+3110653952,3110654975,NO
3110654976,3110655999,RU
3110656000,3110657023,IE
3110657024,3110658047,GI
@@ -103324,15 +112377,17 @@
3110753280,3110754303,DE
3110754304,3110755327,IE
3110755328,3110756351,RU
+3110756352,3110757375,NL
3110757376,3110758399,CY
-3110758400,3110759423,RU
+3110758400,3110758655,UA
+3110758656,3110759423,RU
3110759424,3110760447,AT
3110760448,3110761471,HU
3110761472,3110762495,RU
3110762496,3110763007,NL
3110763008,3110763263,RO
3110763264,3110763519,NL
-3110763520,3110764543,AD
+3110763520,3110764543,ES
3110764544,3110765567,IL
3110765568,3110766591,PL
3110766592,3110767615,IR
@@ -103433,10 +112488,12 @@
3110875136,3110876159,DE
3110876160,3110878207,GB
3110878208,3110879231,CZ
+3110879232,3110880255,NL
3110880256,3110881279,PL
3110881280,3110883327,DE
3110883328,3110884351,IL
-3110884352,3110886399,RU
+3110884352,3110885375,SC
+3110885376,3110886399,RU
3110886400,3110887423,GB
3110887424,3110888447,IR
3110888448,3110889471,DK
@@ -103754,7 +112811,7 @@
3111214080,3111215103,GB
3111215104,3111216127,SE
3111216128,3111217151,AT
-3111217152,3111218175,IR
+3111217152,3111218175,IQ
3111218176,3111219199,RU
3111219200,3111220223,IR
3111220224,3111221247,RU
@@ -103797,7 +112854,8 @@
3111259136,3111260159,DE
3111260160,3111261183,IE
3111261184,3111262207,TR
-3111262208,3111264511,NL
+3111262208,3111264255,NL
+3111264256,3111264511,RO
3111264512,3111264767,AU
3111264768,3111265279,HK
3111265280,3111265334,NL
@@ -103859,7 +112917,9 @@
3111313525,3111313663,GB
3111313664,3111313919,NL
3111313920,3111314175,DE
-3111314176,3111315455,GB
+3111314176,3111314687,GB
+3111314688,3111314943,IE
+3111314944,3111315455,GB
3111315456,3111316479,IT
3111316480,3111317503,NL
3111317504,3111318527,SY
@@ -104005,6 +113065,8 @@
3111449503,3111449599,NO
3111449600,3111451647,DE
3111451648,3111452671,PL
+3111452672,3111453694,NL
+3111453695,3111453695,DE
3111453696,3111454719,NL
3111454720,3111455743,IQ
3111455744,3111456255,CH
@@ -104020,7 +113082,7 @@
3111465984,3111467007,US
3111467008,3111469055,FR
3111469056,3111470079,EE
-3111470080,3111471103,AE
+3111470080,3111471103,DE
3111471104,3111473151,NL
3111473152,3111474175,BG
3111474176,3111475199,PL
@@ -104161,7 +113223,8 @@
3111616512,3111617535,FI
3111617536,3111618559,GB
3111618560,3111619583,DE
-3111619584,3111620351,GB
+3111619584,3111620095,GB
+3111620096,3111620351,ZA
3111620352,3111620607,US
3111620608,3111621631,GB
3111621632,3111622655,PL
@@ -104256,7 +113319,7 @@
3111714816,3111715839,TJ
3111715840,3111716863,GB
3111716864,3111717887,NL
-3111717888,3111718911,AD
+3111717888,3111718911,ES
3111718912,3111719935,GB
3111719936,3111720959,CY
3111720960,3111721983,GB
@@ -104285,7 +113348,7 @@
3111746048,3111746303,RS
3111746304,3111746559,MD
3111746560,3111747583,TR
-3111747584,3111748607,DE
+3111747584,3111748607,IR
3111748608,3111750655,GB
3111750656,3111751679,FR
3111751680,3111752703,GB
@@ -104299,7 +113362,7 @@
3111758336,3111758591,NL
3111758592,3111758847,FR
3111758848,3111759871,DK
-3111759872,3111760127,IS
+3111759872,3111760127,AU
3111760128,3111760383,AQ
3111760384,3111760639,GB
3111760640,3111760895,LT
@@ -104314,6 +113377,7 @@
3111770112,3111771135,FI
3111771136,3111772159,GB
3111772160,3111773183,NL
+3111773184,3111774207,DK
3111774208,3111775231,ES
3111775232,3111776255,AM
3111776256,3111778303,RU
@@ -104396,7 +113460,13 @@
3111855104,3111856127,IT
3111856128,3111858175,RU
3111858176,3111859199,PL
-3111859200,3111860223,EE
+3111859200,3111859239,EE
+3111859240,3111859247,DE
+3111859248,3111859255,FI
+3111859256,3111859263,SE
+3111859264,3111859271,NO
+3111859272,3111859279,GB
+3111859280,3111860223,EE
3111860224,3111861247,ES
3111861248,3111862271,NL
3111862272,3111863295,RU
@@ -104512,7 +113582,7 @@
3111990272,3111991295,FR
3111991296,3111992319,RU
3111992320,3111993343,RS
-3111993344,3111994367,US
+3111993344,3111994367,GB
3111994368,3111995391,IT
3111995392,3111996415,RU
3111996416,3111997439,ES
@@ -104550,7 +113620,7 @@
3112031232,3112032255,CH
3112032256,3112033279,RU
3112033280,3112034303,DK
-3112034304,3112034305,IT
+3112034304,3112034305,DE
3112034306,3112034306,GB
3112034307,3112034307,PL
3112034308,3112034308,FR
@@ -104680,7 +113750,7 @@
3112071168,3112072191,UA
3112072192,3112073215,RO
3112073216,3112074239,NL
-3112074240,3112075263,UA
+3112074240,3112075263,IR
3112075264,3112076287,RU
3112076288,3112077311,IR
3112077312,3112078335,GB
@@ -104824,7 +113894,7 @@
3112212480,3112213503,IR
3112213504,3112214527,PL
3112214528,3112215551,FI
-3112215552,3112216575,LT
+3112215552,3112216575,IR
3112216576,3112217599,ES
3112217600,3112218623,CH
3112218624,3112219647,GB
@@ -104871,8 +113941,7 @@
3112262656,3112263679,AZ
3112263680,3112265727,RU
3112265728,3112266751,ES
-3112266752,3112267007,IR
-3112267008,3112267775,UA
+3112266752,3112267775,IR
3112267776,3112268799,PL
3112268800,3112269823,IR
3112269824,3112270847,RS
@@ -104915,9 +113984,12 @@
3112312832,3112313855,DE
3112313856,3112315903,GB
3112315904,3112316927,SE
-3112316928,3112317951,IQ
+3112316928,3112316929,IQ
+3112316930,3112316930,IT
+3112316931,3112317951,IQ
3112317952,3112318975,UA
3112318976,3112319999,TR
+3112320000,3112321023,HR
3112321024,3112322047,FI
3112322048,3112323071,NO
3112323072,3112324095,NL
@@ -105027,8 +114099,12 @@
3112440832,3112441855,RU
3112441856,3112442879,DE
3112442880,3112443903,RU
-3112443904,3112447999,DE
+3112443904,3112444927,DE
+3112444928,3112446975,GB
+3112446976,3112447999,DE
3112448000,3112449023,LT
+3112449024,3112450046,NL
+3112450047,3112450047,DE
3112450048,3112451071,IT
3112451072,3112452095,LU
3112452096,3112453119,FR
@@ -105136,6 +114212,7 @@
3112556544,3112557567,IT
3112557568,3112558591,GB
3112558592,3112559615,IQ
+3112559616,3112560639,SA
3112561664,3112562687,DE
3112562688,3112563711,CZ
3112563712,3112564735,AE
@@ -105184,7 +114261,7 @@
3112609792,3112610815,IT
3112610816,3112611839,GE
3112611840,3112612863,LB
-3112612864,3112613887,US
+3112612864,3112613887,GB
3112613888,3112614911,TR
3112614912,3112615935,SK
3112615936,3112616959,BG
@@ -105250,7 +114327,7 @@
3112677376,3112678399,FR
3112678400,3112679167,UA
3112679168,3112679423,RU
-3112679424,3112680447,NO
+3112679424,3112680447,BG
3112680448,3112681471,IQ
3112681472,3112682495,PL
3112683520,3112684543,JO
@@ -105311,12 +114388,11 @@
3112736768,3112737791,PL
3112737792,3112737983,DE
3112737984,3112737985,FR
-3112737986,3112740415,DE
-3112740416,3112740419,FR
-3112740420,3112741887,DE
+3112737986,3112741887,DE
3112741888,3112742911,IR
3112742912,3112743935,RO
3112743936,3112744959,IR
+3112744960,3112745983,RU
3112745984,3112747007,NL
3112747008,3112748031,LT
3112748032,3112750079,CZ
@@ -105336,7 +114412,9 @@
3112764416,3112765439,NO
3112765440,3112766463,GB
3112766464,3112767487,DE
+3112767488,3112767743,MT
3112767744,3112767871,NL
+3112767872,3112767999,MT
3112768000,3112768018,NL
3112768019,3112768019,RU
3112768020,3112768511,NL
@@ -105433,9 +114511,7 @@
3112857600,3112858623,IE
3112858624,3112859647,FR
3112859648,3112860159,IQ
-3112860160,3112860353,US
-3112860354,3112860354,IT
-3112860355,3112860415,US
+3112860160,3112860415,US
3112860416,3112860671,IQ
3112860672,3112861695,AT
3112861696,3112862719,RU
@@ -105536,7 +114612,7 @@
3112955191,3112955263,QA
3112955264,3112955391,KW
3112955392,3112955903,DE
-3112955904,3112956927,US
+3112955904,3112956927,IL
3112956928,3112958975,FR
3112958976,3112959999,EE
3112960000,3112961023,DK
@@ -105613,7 +114689,8 @@
3113020416,3113021439,CZ
3113021440,3113022463,IR
3113022464,3113023487,CZ
-3113023488,3113024511,SA
+3113023488,3113023999,AE
+3113024000,3113024511,SA
3113024512,3113025535,DE
3113025536,3113026559,CH
3113026560,3113027583,FR
@@ -105698,7 +114775,7 @@
3113097536,3113097727,US
3113097728,3113098239,DE
3113098240,3113099263,IE
-3113099264,3113100287,US
+3113099264,3113100287,RU
3113100288,3113102335,LB
3113102336,3113103359,ES
3113103360,3113104383,SK
@@ -105723,7 +114800,7 @@
3113121792,3113122815,IT
3113122816,3113123839,IR
3113123840,3113124863,GB
-3113124864,3113125887,VG
+3113124864,3113125887,RU
3113125888,3113126911,FR
3113126912,3113127167,DE
3113127168,3113127423,NL
@@ -105770,13 +114847,13 @@
3113169920,3113170943,NL
3113170944,3113171967,UA
3113171968,3113172991,FI
+3113172992,3113174015,RO
3113174016,3113175039,DE
3113175040,3113176063,IR
3113176064,3113177087,GB
3113177088,3113178111,BG
3113178112,3113179135,GB
-3113179136,3113179647,RU
-3113179648,3113180159,NL
+3113179136,3113180159,NL
3113180160,3113182207,ES
3113182208,3113183231,US
3113183232,3113184255,NL
@@ -105847,7 +114924,8 @@
3113238528,3113239551,IR
3113239552,3113240319,US
3113240320,3113240575,GB
-3113240576,3113241599,IT
+3113240576,3113241343,IT
+3113241344,3113241599,DE
3113241600,3113242623,TR
3113242624,3113243647,RO
3113243648,3113244671,US
@@ -105933,6 +115011,7 @@
3113305088,3113306111,ES
3113306112,3113307135,US
3113307136,3113308159,FR
+3113308160,3113309183,FI
3113309184,3113310207,IT
3113310208,3113311231,GB
3113311232,3113312255,SE
@@ -106087,7 +115166,8 @@
3113458688,3113459711,US
3113459712,3113460735,IR
3113460736,3113461759,IT
-3113461760,3113462783,DE
+3113461760,3113462015,AT
+3113462016,3113462783,DE
3113462784,3113463807,IE
3113463808,3113464831,IR
3113464832,3113465855,IS
@@ -106102,9 +115182,7 @@
3113473280,3113473535,SE
3113473536,3113473791,ES
3113473792,3113475071,DE
-3113475072,3113476095,FR
-3113476096,3113476351,YT
-3113476352,3113476607,FR
+3113475072,3113476607,FR
3113476608,3113477119,RE
3113477120,3113479167,FR
3113479168,3113480191,SE
@@ -106119,6 +115197,7 @@
3113488384,3113489407,NO
3113489408,3113490431,NL
3113490432,3113491455,RU
+3113491456,3113492479,NL
3113492480,3113493503,TR
3113493504,3113494527,RU
3113494528,3113495551,NL
@@ -106179,8 +115258,7 @@
3113551872,3113552895,FR
3113552896,3113553919,UA
3113553920,3113554943,NO
-3113554944,3113555967,US
-3113555968,3113556991,NL
+3113554944,3113556991,US
3113556992,3113558015,DE
3113558016,3113559039,IT
3113559040,3113560063,NL
@@ -106233,6 +115311,7 @@
3113606144,3113607167,GB
3113607168,3113608191,DE
3113608192,3113609215,DK
+3113609216,3113610239,US
3113610240,3113611263,GB
3113611264,3113613311,RU
3113613312,3113614335,DE
@@ -106432,6 +115511,7 @@
3113736192,3113737215,ES
3113737216,3113738239,NL
3113738240,3113739263,GB
+3113739264,3113740287,FR
3113740288,3113741311,NL
3113741312,3113742335,EG
3113742336,3113743359,RU
@@ -106563,6 +115643,7 @@
3113868288,3113869311,TR
3113869312,3113870335,ES
3113870336,3113871359,TR
+3113871360,3113872383,IE
3113872384,3113873407,GB
3113873408,3113874431,RU
3113874432,3113875455,FR
@@ -106617,7 +115698,8 @@
3113922560,3113923583,DK
3113923584,3113924607,UA
3113924608,3113925631,IR
-3113925632,3113926655,DE
+3113925632,3113926399,KW
+3113926400,3113926655,GB
3113926656,3113927679,RU
3113927680,3113928703,ES
3113928704,3113929727,RU
@@ -106671,8 +115753,10 @@
3113975808,3113976831,CZ
3113976832,3113977855,DK
3113977856,3113978879,GB
+3113978880,3113979903,NO
3113979904,3113980927,GB
3113980928,3113981951,TR
+3113981952,3113982975,DK
3113982976,3113983999,IQ
3113984000,3113985023,SY
3113985024,3113986047,DE
@@ -106691,6 +115775,7 @@
3113996288,3113997311,HR
3113997312,3113998335,NO
3113998336,3113999359,HR
+3113999360,3114000383,LT
3114000384,3114001407,HR
3114001408,3114002431,RO
3114002432,3114002687,US
@@ -106724,7 +115809,8 @@
3114027008,3114028031,RU
3114028032,3114030079,FR
3114030080,3114031103,DE
-3114031104,3114033151,FI
+3114031104,3114032127,NO
+3114032128,3114033151,FI
3114033152,3114034175,DK
3114034176,3114035199,ES
3114035200,3114036223,GB
@@ -106733,6 +115819,7 @@
3114038272,3114039295,GB
3114039296,3114040319,CZ
3114040320,3114041343,DE
+3114041344,3114042367,SK
3114042368,3114043391,IT
3114043392,3114045439,GB
3114045440,3114046463,AT
@@ -106851,6 +115938,7 @@
3114153984,3114155007,GB
3114155008,3114156031,DK
3114156032,3114157055,CZ
+3114157056,3114158079,US
3114158080,3114159103,FI
3114159104,3114160127,GB
3114160128,3114161151,HR
@@ -106872,9 +115960,14 @@
3114168320,3114169343,RU
3114169344,3114169583,DE
3114169584,3114169599,GB
-3114169600,3114170607,DE
+3114169600,3114170367,DE
+3114170368,3114170559,JE
+3114170560,3114170607,DE
3114170608,3114170623,GB
-3114170624,3114171391,DE
+3114170624,3114170815,JE
+3114170816,3114170863,DE
+3114170864,3114170879,JE
+3114170880,3114171391,DE
3114171392,3114172415,ES
3114172416,3114172927,RU
3114172928,3114173439,GB
@@ -106963,6 +116056,7 @@
3114245632,3114245887,IS
3114245888,3114246143,SE
3114246144,3114247167,UA
+3114247168,3114248191,RU
3114248192,3114249215,CZ
3114249216,3114250239,RU
3114250240,3114251263,IR
@@ -107011,6 +116105,7 @@
3114286080,3114287103,UA
3114287104,3114287359,AE
3114287360,3114288127,US
+3114288128,3114289151,SA
3114289152,3114290175,NL
3114290176,3114291199,DE
3114291200,3114291455,ES
@@ -107045,6 +116140,7 @@
3114311680,3114312703,ES
3114312704,3114313727,GB
3114313728,3114314751,ES
+3114314752,3114315775,DE
3114315776,3114316799,IR
3114316800,3114318847,GB
3114318848,3114319871,RU
@@ -107182,6 +116278,7 @@
3114435072,3114435327,NL
3114435328,3114435583,US
3114435584,3114436607,MD
+3114436608,3114437631,DK
3114437632,3114438655,MD
3114438656,3114439679,TR
3114439680,3114440703,IL
@@ -107238,7 +116335,7 @@
3114492160,3114492927,GB
3114492928,3114493951,ES
3114493952,3114495999,RO
-3114496000,3114497023,DE
+3114496000,3114498047,DE
3114498048,3114499071,SA
3114499072,3114500095,FR
3114500096,3114501119,TR
@@ -107301,7 +116398,7 @@
3114547456,3114547711,FR
3114547712,3114547967,DK
3114547968,3114548223,NL
-3114548224,3114549247,GB
+3114548224,3114549759,DE
3114549760,3114550271,GB
3114550272,3114551295,CZ
3114551296,3114552319,IR
@@ -107332,7 +116429,8 @@
3114576896,3114577919,RU
3114577920,3114578943,IT
3114578944,3114579967,GB
-3114579968,3114580991,CH
+3114579968,3114580223,CH
+3114580224,3114580991,IT
3114580992,3114582015,SA
3114582016,3114583039,IL
3114583040,3114584063,SA
@@ -107397,8 +116495,10 @@
3114634240,3114635263,SK
3114635264,3114636287,FR
3114636288,3114637311,PL
-3114637312,3114638079,NL
-3114638080,3114638335,CA
+3114637312,3114637567,NL
+3114637568,3114637823,RU
+3114637824,3114638079,NL
+3114638080,3114638335,US
3114638336,3114639103,NL
3114639104,3114639359,PL
3114639360,3114640383,RU
@@ -107408,7 +116508,8 @@
3114643456,3114644479,BH
3114644480,3114645503,GB
3114645504,3114646527,RO
-3114646528,3114648575,NL
+3114646528,3114647551,NL
+3114647552,3114648575,IT
3114648576,3114649599,NO
3114649600,3114650623,RU
3114650624,3114651647,IR
@@ -107469,7 +116570,8 @@
3114708992,3114710015,DE
3114710016,3114711039,NO
3114711040,3114712063,FI
-3114712064,3114713087,DE
+3114712064,3114712319,US
+3114712320,3114713087,DE
3114713088,3114714111,CH
3114714112,3114715135,RU
3114715136,3114716159,DE
@@ -107513,7 +116615,7 @@
3114754048,3114755071,NL
3114755072,3114756095,IR
3114756096,3114757119,IT
-3114757120,3114758143,ES
+3114757120,3114758143,IL
3114758144,3114759167,IT
3114759168,3114760191,GB
3114760192,3114761215,RU
@@ -107614,8 +116716,8 @@
3114855424,3114856447,RU
3114856448,3114857471,SE
3114857472,3114858495,DK
-3114858496,3114858751,NL
-3114858752,3114859519,FR
+3114858496,3114859263,NL
+3114859264,3114859519,FR
3114859520,3114860543,NL
3114860544,3114860799,DE
3114860800,3114861311,US
@@ -107719,6 +116821,7 @@
3114954752,3114955775,DE
3114955776,3114956799,AE
3114956800,3114957823,DE
+3114957824,3114958847,DK
3114958848,3114959871,LB
3114959872,3114960895,CH
3114960896,3114961919,IT
@@ -107784,14 +116887,17 @@
3115019264,3115020287,LB
3115020288,3115021311,FR
3115021312,3115022335,AE
-3115023360,3115023615,SE
+3115022336,3115022847,NL
+3115022848,3115023359,GB
+3115023360,3115023615,CZ
3115023616,3115024127,DE
-3115024128,3115024383,SE
+3115024128,3115024383,CZ
3115024384,3115025407,NL
3115025408,3115026431,SY
3115026432,3115027455,DE
3115027456,3115028479,SK
3115028480,3115029503,AL
+3115029504,3115030527,DE
3115030528,3115031551,SA
3115031552,3115032575,FR
3115032576,3115033599,RU
@@ -107834,7 +116940,8 @@
3115072000,3115072511,DE
3115072512,3115073535,ES
3115073536,3115073791,US
-3115073792,3115074559,DE
+3115073792,3115074303,DE
+3115074304,3115074559,US
3115074560,3115075583,IR
3115075584,3115076607,SY
3115076608,3115077631,SE
@@ -107868,6 +116975,7 @@
3115099392,3115099647,US
3115099648,3115100159,NL
3115100160,3115101183,ES
+3115101184,3115102207,LT
3115102208,3115103231,ES
3115103232,3115104255,IT
3115104256,3115105279,ES
@@ -107937,8 +117045,7 @@
3115170816,3115171839,TR
3115171840,3115172863,GB
3115172864,3115173887,SE
-3115173888,3115174911,FR
-3115174912,3115175935,AL
+3115173888,3115175935,FR
3115175936,3115176959,FI
3115176960,3115177983,IT
3115177984,3115179007,NL
@@ -107964,7 +117071,7 @@
3115196416,3115197439,LI
3115197440,3115198463,DE
3115198464,3115198719,NO
-3115198720,3115199487,NL
+3115198720,3115199487,US
3115199488,3115200511,CZ
3115200512,3115201535,DE
3115201536,3115202559,FR
@@ -108033,7 +117140,7 @@
3115258880,3115259903,AT
3115259904,3115260927,NL
3115260928,3115261951,GB
-3115261952,3115262975,MD
+3115261952,3115262975,IL
3115262976,3115263999,GB
3115264000,3115265023,CY
3115265024,3115266047,RU
@@ -108073,7 +117180,7 @@
3115293952,3115294463,RU
3115294464,3115294719,IN
3115294720,3115295743,GB
-3115295744,3115296767,NL
+3115295744,3115296767,US
3115296768,3115297791,IE
3115297792,3115298815,RU
3115298816,3115299839,FI
@@ -108160,9 +117267,10 @@
3115385856,3115387903,SK
3115387904,3115388927,MK
3115388928,3115389951,AT
-3115389952,3115390143,DE
-3115390144,3115390159,GB
-3115390160,3115390463,DE
+3115389952,3115390127,DE
+3115390128,3115390159,GB
+3115390160,3115390175,US
+3115390176,3115390463,DE
3115390464,3115390719,GB
3115390720,3115390975,NL
3115390976,3115391999,TR
@@ -108206,7 +117314,7 @@
3115429888,3115430399,NL
3115430400,3115430911,FI
3115430912,3115431935,FR
-3115431936,3115432959,AE
+3115431936,3115432959,GB
3115432960,3115433983,UA
3115433984,3115435007,IT
3115435008,3115436031,ES
@@ -108246,10 +117354,10 @@
3115469824,3115470847,FR
3115470848,3115471871,ES
3115471872,3115472895,PL
-3115472896,3115473919,GB
+3115472896,3115473919,US
3115473920,3115474943,IT
3115474944,3115475967,PL
-3115475968,3115476991,IT
+3115475968,3115476991,GB
3115476992,3115478015,IR
3115478016,3115479039,DE
3115479040,3115480063,DK
@@ -108289,7 +117397,7 @@
3115514880,3115515903,IT
3115515904,3115517951,RU
3115517952,3115518975,KZ
-3115518976,3115519999,GB
+3115518976,3115519999,US
3115520000,3115521023,CH
3115521024,3115522047,GB
3115522048,3115523071,TR
@@ -108536,7 +117644,7 @@
3115758592,3115759615,ES
3115759616,3115760639,US
3115760640,3115761663,TR
-3115761664,3115762687,MD
+3115761664,3115762687,NL
3115762688,3115763711,IT
3115763712,3115764735,GB
3115764736,3115765759,DK
@@ -108548,7 +117656,7 @@
3115770880,3115771903,GB
3115771904,3115772927,DE
3115772928,3115773951,TR
-3115773952,3115774975,US
+3115773952,3115774975,GB
3115774976,3115775999,PL
3115776000,3115777023,IR
3115777024,3115779071,FR
@@ -108577,6 +117685,7 @@
3115800064,3115800319,GB
3115800320,3115800575,US
3115800576,3115801599,DE
+3115801600,3115802623,UA
3115802624,3115802879,NL
3115802880,3115803135,RO
3115803136,3115803391,NL
@@ -108624,8 +117733,7 @@
3115842560,3115843583,FR
3115843584,3115844607,ES
3115844608,3115845631,FR
-3115845632,3115846399,PL
-3115846400,3115846655,SG
+3115845632,3115846655,PL
3115846656,3115847679,CH
3115847680,3115848703,IL
3115848704,3115849727,AE
@@ -108666,7 +117774,8 @@
3115883776,3115884031,US
3115884032,3115884543,GB
3115884544,3115885567,DE
-3115885568,3115886591,NL
+3115885568,3115885823,GB
+3115885824,3115886591,NL
3115886592,3115887615,UA
3115887616,3115888639,ES
3115888640,3115889663,CH
@@ -108683,7 +117792,7 @@
3115896832,3115897855,TR
3115897856,3115898879,DE
3115898880,3115899903,IQ
-3115899904,3115900927,GB
+3115899904,3115900927,UA
3115900928,3115901951,DE
3115901952,3115902975,IT
3115902976,3115903999,RU
@@ -108712,7 +117821,7 @@
3115927552,3115928575,SY
3115928576,3115929599,GB
3115929600,3115930623,US
-3115930624,3115931647,GB
+3115930624,3115931647,LU
3115931648,3115932671,SI
3115932672,3115933695,ES
3115933696,3115934719,DK
@@ -108737,7 +117846,7 @@
3115953152,3115954175,IQ
3115954176,3115955199,LB
3115955200,3115956223,UA
-3115956224,3115957247,CY
+3115956224,3115957247,NL
3115957248,3115959295,DE
3115959296,3115960319,ES
3115960320,3115961343,CH
@@ -108759,7 +117868,7 @@
3115974656,3115975679,RU
3115975680,3115975935,US
3115975936,3115976703,GB
-3115976704,3115976959,NL
+3115976704,3115976959,US
3115976960,3115977471,GB
3115977472,3115977727,US
3115977728,3115978751,IT
@@ -108775,7 +117884,7 @@
3115988992,3115990015,SE
3115990016,3115991039,RO
3115991040,3115991295,NL
-3115991296,3115991551,RU
+3115991296,3115991551,DE
3115991552,3115991807,IL
3115991808,3115992063,NL
3115992064,3115993087,IT
@@ -108784,8 +117893,7 @@
3115994368,3115994623,GB
3115994624,3115994879,SE
3115994880,3115995135,DK
-3115995136,3115995391,XK
-3115995392,3115995647,RS
+3115995136,3115995647,RS
3115995648,3115995903,AL
3115995904,3115996159,RS
3115996160,3115997183,GR
@@ -108836,8 +117944,7 @@
3116045312,3116046335,NL
3116046336,3116047359,NO
3116047360,3116048383,FR
-3116048384,3116049407,MD
-3116049408,3116050431,IL
+3116048384,3116050431,IL
3116050432,3116052479,IT
3116052480,3116053503,IR
3116053504,3116054527,PL
@@ -108871,8 +117978,7 @@
3116082176,3116083199,FR
3116083200,3116084223,US
3116084224,3116085247,IT
-3116085248,3116085503,KW
-3116085504,3116085759,SA
+3116085248,3116085759,KW
3116085760,3116086015,EG
3116086016,3116086271,SA
3116086272,3116087295,ES
@@ -108918,11 +118024,12 @@
3116119296,3116119551,AT
3116119552,3116120063,DE
3116120064,3116121087,HU
-3116121344,3116121599,GB
+3116121088,3116122111,GB
3116122112,3116123135,DE
3116123136,3116124159,PL
3116124160,3116125183,DE
3116125184,3116126207,NL
+3116126208,3116127231,IT
3116127232,3116128255,TR
3116128256,3116130303,FR
3116130304,3116131327,RU
@@ -108984,6 +118091,7 @@
3116186624,3116187647,IT
3116187648,3116188671,ES
3116188672,3116189695,MD
+3116189696,3116190719,BG
3116190720,3116191743,IT
3116191744,3116192767,AT
3116192768,3116193791,SE
@@ -109061,7 +118169,8 @@
3116256256,3116257279,AT
3116257280,3116257535,CR
3116257536,3116257791,US
-3116257792,3116258303,AT
+3116257792,3116258047,AT
+3116258048,3116258303,US
3116258304,3116259327,NL
3116259328,3116260351,FR
3116260352,3116261375,DE
@@ -109162,8 +118271,7 @@
3116368896,3116369919,GI
3116369920,3116370943,IR
3116370944,3116371967,FI
-3116371968,3116372223,NL
-3116372224,3116372991,FR
+3116371968,3116372991,FR
3116372992,3116374015,RU
3116374016,3116375039,FI
3116375040,3116376063,DE
@@ -109174,7 +118282,8 @@
3116380160,3116381183,DE
3116381184,3116382207,LB
3116382208,3116382463,JP
-3116382464,3116382975,AQ
+3116382464,3116382719,RU
+3116382720,3116382975,AQ
3116382976,3116383231,DE
3116383232,3116384255,RU
3116384256,3116385279,DE
@@ -109230,6 +118339,8 @@
3116434432,3116435455,TR
3116435456,3116436479,ES
3116436480,3116437503,AM
+3116437504,3116438271,US
+3116438272,3116438527,DE
3116438528,3116439551,RU
3116439552,3116440575,LT
3116440576,3116441599,MD
@@ -109385,7 +118496,7 @@
3116576768,3116577791,TR
3116577792,3116578815,HU
3116578816,3116579839,GB
-3116579840,3116580863,AT
+3116579840,3116580863,AU
3116580864,3116581887,US
3116581888,3116582911,CH
3116582912,3116583935,IR
@@ -109437,12 +118548,13 @@
3116626944,3116627967,NL
3116627968,3116628991,FR
3116628992,3116630015,TR
+3116630016,3116630783,DE
+3116630784,3116631039,US
3116631040,3116632063,FI
3116632064,3116633087,CH
3116633088,3116634111,RO
3116634112,3116635135,ES
-3116635136,3116635903,DE
-3116635904,3116636159,GB
+3116635136,3116636159,DE
3116636160,3116637183,US
3116637184,3116638207,NL
3116638208,3116639231,ES
@@ -109486,8 +118598,7 @@
3116681216,3116682239,ES
3116682240,3116684287,GB
3116684288,3116686335,UZ
-3116686336,3116687359,NL
-3116687360,3116688383,US
+3116686336,3116688383,US
3116688384,3116689407,PL
3116689408,3116690431,FI
3116690432,3116691455,RU
@@ -109501,7 +118612,7 @@
3116700672,3116701695,SY
3116701696,3116702719,NL
3116702720,3116703487,US
-3116703488,3116703743,GB
+3116703488,3116703743,DE
3116703744,3116704767,RU
3116704768,3116705791,BE
3116705792,3116706815,CH
@@ -109566,6 +118677,7 @@
3116767232,3116767999,US
3116768000,3116769279,GB
3116769280,3116770303,LT
+3116770304,3116771327,IT
3116771328,3116772351,RU
3116772352,3116773375,MD
3116773376,3116774399,ES
@@ -109802,8 +118914,8 @@
3117002752,3117003775,ES
3117003776,3117004799,GB
3117004800,3117005823,IT
-3117005824,3117005855,PT
-3117005856,3117006335,AE
+3117005824,3117005856,PT
+3117005857,3117006335,AE
3117006336,3117006591,IR
3117006592,3117006847,AE
3117006848,3117007871,KW
@@ -109816,7 +118928,7 @@
3117014016,3117015039,TR
3117015040,3117015551,DE
3117015552,3117016063,US
-3117016064,3117017087,NL
+3117016064,3117017087,TR
3117017088,3117018111,CZ
3117018112,3117019135,SK
3117019136,3117020159,IT
@@ -109871,6 +118983,7 @@
3117068267,3117068267,NL
3117068268,3117068287,US
3117068288,3117069311,SE
+3117069312,3117070335,DE
3117070336,3117071359,IT
3117071360,3117073407,ES
3117073408,3117074431,DE
@@ -109889,6 +119002,7 @@
3117086720,3117087743,LU
3117087744,3117088767,NL
3117088768,3117089791,DK
+3117089792,3117090815,LV
3117090816,3117091839,IT
3117091840,3117092863,GB
3117092864,3117093887,HR
@@ -109943,8 +119057,7 @@
3117143040,3117144063,GB
3117144064,3117145087,US
3117145088,3117147135,ES
-3117147136,3117147391,GR
-3117147392,3117148159,AE
+3117147136,3117148159,AE
3117148160,3117149183,DK
3117149184,3117150207,RU
3117150208,3117151231,NL
@@ -110131,7 +119244,7 @@
3117326336,3117326847,NL
3117326848,3117327359,US
3117327360,3117328383,RU
-3117328384,3117329407,FR
+3117328384,3117329407,US
3117329408,3117329536,IQ
3117329537,3117329537,IT
3117329538,3117330431,IQ
@@ -110203,7 +119316,7 @@
3117398016,3117399039,UA
3117399040,3117400063,LT
3117400064,3117401087,NL
-3117401088,3117402111,AU
+3117401088,3117402111,IR
3117402112,3117403135,GB
3117403136,3117404159,NL
3117404160,3117405183,DE
@@ -110253,17 +119366,17 @@
3117451264,3117452287,IT
3117452288,3117453311,FR
3117453312,3117454335,ES
-3117454336,3117455359,HK
+3117454336,3117455359,IR
3117455360,3117455615,CZ
3117455616,3117455871,AM
3117455872,3117456127,ME
3117456128,3117456383,DK
-3117456384,3117457407,CH
+3117456384,3117457407,BG
3117457408,3117458431,DE
3117458432,3117459455,PL
3117459456,3117459711,US
3117459712,3117460479,GB
-3117460480,3117460735,DE
+3117460480,3117460735,NL
3117460736,3117461503,IR
3117461504,3117462527,UZ
3117462528,3117463551,IR
@@ -110487,7 +119600,7 @@
3117683712,3117684735,FR
3117684736,3117685759,SE
3117685760,3117686783,RU
-3117686784,3117687807,US
+3117686784,3117687807,GB
3117687808,3117688831,DE
3117688832,3117689855,PL
3117689856,3117690879,DE
@@ -110546,7 +119659,9 @@
3117736856,3117736863,DE
3117736864,3117736867,PL
3117736868,3117736871,RU
-3117736872,3117736959,FR
+3117736872,3117736875,GB
+3117736876,3117736879,CH
+3117736880,3117736959,FR
3117736960,3117737983,IE
3117737984,3117739007,NL
3117739008,3117743103,UA
@@ -110776,7 +119891,8 @@
3117959168,3117960191,US
3117960192,3117961215,GB
3117961216,3117962239,RU
-3117962240,3117963263,DE
+3117962240,3117963007,DE
+3117963008,3117963263,UA
3117963264,3117964287,IT
3117964288,3117965055,FR
3117965056,3117965311,SG
@@ -110833,8 +119949,7 @@
3118018560,3118019583,GB
3118019584,3118020607,DE
3118020608,3118021631,GB
-3118021632,3118022655,US
-3118022656,3118023679,UA
+3118021632,3118023679,US
3118023680,3118023935,RO
3118023936,3118024191,US
3118024192,3118024447,SG
@@ -110850,13 +119965,15 @@
3118032896,3118033919,GB
3118033920,3118034943,EG
3118034944,3118035967,ES
-3118035968,3118036735,GB
+3118035968,3118036223,NL
+3118036224,3118036479,GB
+3118036480,3118036735,NL
3118036736,3118036991,FR
3118036992,3118037759,CN
3118037760,3118038015,GB
3118038016,3118039039,US
3118039040,3118041087,GB
-3118041088,3118042111,PL
+3118041088,3118042111,UA
3118042112,3118043135,US
3118043136,3118044159,DE
3118044160,3118045183,US
@@ -110979,6 +120096,7 @@
3118175232,3118176255,IS
3118176256,3118177279,DE
3118177280,3118178303,RU
+3118178304,3118179327,GB
3118179328,3118181375,CZ
3118181376,3118182399,FR
3118182400,3118183423,TR
@@ -111042,6 +120160,7 @@
3118244864,3118245887,ES
3118245888,3118246911,SY
3118246912,3118247935,NL
+3118247936,3118248959,GB
3118248960,3118249983,AZ
3118249984,3118251007,RO
3118251008,3118252031,HU
@@ -111061,7 +120180,7 @@
3118264320,3118265343,ES
3118265344,3118266367,CH
3118266368,3118267391,ES
-3118267392,3118268415,MD
+3118267392,3118268415,DK
3118268416,3118269439,NO
3118269440,3118270463,GB
3118270464,3118271487,ES
@@ -111141,7 +120260,7 @@
3118311424,3118312447,DE
3118312448,3118313471,IT
3118313472,3118314495,IS
-3118314496,3118315519,UA
+3118314496,3118315519,US
3118315520,3118316543,BE
3118316544,3118317567,ES
3118317568,3118318591,IR
@@ -111535,7 +120654,7 @@
3118684160,3118685183,AT
3118685184,3118686207,ES
3118686208,3118687231,BY
-3118687232,3118688255,ES
+3118687232,3118689279,ES
3118689280,3118689535,NL
3118689536,3118689791,GB
3118689792,3118690303,NL
@@ -111570,7 +120689,7 @@
3118721024,3118722047,FR
3118722048,3118723071,IQ
3118723072,3118724095,GB
-3118724096,3118724097,MD
+3118724096,3118724097,IT
3118724098,3118725119,ES
3118725120,3118726143,GB
3118726144,3118726399,HK
@@ -111599,7 +120718,7 @@
3118747648,3118748671,NL
3118748672,3118749695,FR
3118749696,3118750719,RU
-3118750720,3118751743,US
+3118750720,3118751743,PK
3118751744,3118752767,ES
3118752768,3118754815,UA
3118754816,3118755839,PL
@@ -111619,10 +120738,9 @@
3118770688,3118770943,DE
3118771200,3118772223,ES
3118772224,3118773247,DE
-3118773248,3118774271,GB
-3118774272,3118775295,HK
+3118773248,3118775295,GB
3118775296,3118776319,NL
-3118776320,3118777343,UA
+3118776320,3118777343,US
3118777344,3118781439,NL
3118781440,3118782463,SK
3118782464,3118783487,CA
@@ -111636,6 +120754,7 @@
3118790656,3118791679,IT
3118791680,3118792703,GB
3118792704,3118793727,IR
+3118793728,3118794751,GB
3118794752,3118795775,RU
3118795776,3118796799,TR
3118796800,3118797823,IT
@@ -111698,7 +120817,7 @@
3118851072,3118852095,NO
3118852096,3118853119,UA
3118853120,3118854143,IT
-3118854144,3118855167,NL
+3118854144,3118855167,US
3118855168,3118856191,DE
3118856192,3118857215,RU
3118857216,3118858239,BG
@@ -111824,6 +120943,7 @@
3118978048,3118979071,DE
3118979072,3118980095,GB
3118980096,3118981119,NL
+3118981120,3118982143,TR
3118982144,3118983167,LV
3118983168,3118983679,RU
3118983680,3118984191,DE
@@ -112017,7 +121137,7 @@
3119185920,3119186943,GB
3119186944,3119187967,FR
3119187968,3119188991,RU
-3119188992,3119190015,NL
+3119188992,3119190015,US
3119190016,3119191039,SY
3119191040,3119192063,IT
3119192064,3119193087,SY
@@ -112092,9 +121212,7 @@
3119267840,3119269887,RU
3119269888,3119270911,MD
3119270912,3119271935,NL
-3119271936,3119272191,DE
-3119272192,3119272447,GB
-3119272448,3119272959,DE
+3119271936,3119272959,DE
3119272960,3119273983,RO
3119273984,3119275007,IR
3119275008,3119276031,BR
@@ -112187,6 +121305,7 @@
3119365120,3119366143,TR
3119366144,3119367167,RU
3119367168,3119368191,MD
+3119368192,3119369215,ES
3119369216,3119370239,UA
3119370240,3119371263,DE
3119371264,3119375359,UA
@@ -112211,6 +121330,7 @@
3119393792,3119394815,IR
3119394816,3119395839,ES
3119395840,3119396863,NL
+3119396864,3119397887,RO
3119397888,3119399935,PL
3119399936,3119400959,SA
3119400960,3119401983,PL
@@ -112242,7 +121362,8 @@
3119428608,3119429631,AE
3119429632,3119430655,FI
3119430656,3119430911,CH
-3119430912,3119431375,LI
+3119430912,3119431167,VA
+3119431168,3119431375,LI
3119431376,3119431391,DE
3119431392,3119431407,LI
3119431408,3119431415,PA
@@ -112498,11 +121619,13 @@
3119699968,3119700991,HU
3119700992,3119702015,NL
3119702016,3119702527,GB
-3119702528,3119702607,NL
+3119702528,3119702591,NL
+3119702592,3119702607,DE
3119702608,3119702611,SC
3119702612,3119702615,BM
3119702616,3119702619,AQ
-3119702620,3119702783,NL
+3119702620,3119702655,DE
+3119702656,3119702783,NL
3119702784,3119703039,GB
3119703040,3119704063,SE
3119704064,3119705087,CZ
@@ -112590,12 +121713,13 @@
3119780864,3119781887,RU
3119781888,3119782143,GG
3119782144,3119783167,NL
-3119783168,3119783423,HU
+3119783168,3119783423,MD
3119783424,3119783679,NL
3119783680,3119783935,GG
3119783936,3119784959,IT
3119784960,3119785983,NL
-3119785984,3119789055,RU
+3119785984,3119788031,RU
+3119788032,3119789055,GB
3119789056,3119790079,IR
3119790080,3119792127,DE
3119792128,3119793151,PL
@@ -112956,6 +122080,7 @@
3120155648,3120157695,ES
3120157696,3120159487,GB
3120159488,3120159743,US
+3120159744,3120160511,DE
3120160512,3120160767,GB
3120160768,3120161791,US
3120161792,3120162815,PL
@@ -113224,9 +122349,8 @@
3120435200,3120436223,LT
3120436224,3120437247,LU
3120437248,3120438271,ES
-3120438272,3120438783,TR
-3120438784,3120439039,DK
-3120439040,3120439295,TR
+3120438272,3120438527,TR
+3120438528,3120439295,DK
3120439296,3120440319,LB
3120440320,3120441343,DE
3120441344,3120442367,NL
@@ -113243,8 +122367,10 @@
3120450560,3120451583,CH
3120451584,3120452607,SE
3120452608,3120452608,IQ
-3120452609,3120452609,DE
-3120452610,3120453631,IQ
+3120452609,3120452609,IT
+3120452610,3120453376,IQ
+3120453377,3120453377,DE
+3120453378,3120453631,IQ
3120453632,3120454655,GB
3120454656,3120455679,TR
3120455680,3120456703,DE
@@ -113279,7 +122405,7 @@
3120488448,3120489471,CH
3120489472,3120490495,IT
3120490496,3120491519,AT
-3120491520,3120492543,IT
+3120491520,3120492543,TR
3120492544,3120493567,JP
3120493568,3120494591,DE
3120494592,3120495615,SK
@@ -113312,7 +122438,8 @@
3120522240,3120523263,DE
3120523264,3120524287,ES
3120524288,3120525311,GB
-3120525312,3120526335,DE
+3120525312,3120525567,DE
+3120525568,3120526335,US
3120526336,3120527359,CZ
3120527360,3120528383,NL
3120528384,3120529407,ES
@@ -113524,13 +122651,9 @@
3132096512,3132211199,CR
3132211200,3132227583,AR
3132227584,3132293119,EC
-3132293120,3132298007,HN
-3132298008,3132298015,US
-3132298016,3132301727,HN
+3132293120,3132301727,HN
3132301728,3132301743,NL
-3132301744,3132308775,HN
-3132308776,3132308783,US
-3132308784,3132309503,HN
+3132301744,3132309503,HN
3132309504,3132313599,CR
3132313600,3132317695,CL
3132317696,3132321791,CO
@@ -113801,11 +122924,18 @@
3158616064,3158630399,RU
3158630400,3158638591,PL
3158638592,3158704127,LT
-3158704128,3158835199,KW
+3158704128,3158822655,KW
+3158822656,3158822783,US
+3158822784,3158822799,KW
+3158822800,3158822895,US
+3158822896,3158822903,KW
+3158822904,3158822911,US
+3158822912,3158835199,KW
3158835200,3158851583,IQ
3158851584,3158852863,NL
3158852864,3158853119,ES
-3158853120,3158853631,NL
+3158853120,3158853375,NL
+3158853376,3158853631,GL
3158853632,3158855679,RU
3158855680,3158856447,NL
3158856448,3158857471,DE
@@ -113815,7 +122945,7 @@
3158858240,3158858495,SG
3158858496,3158859519,NL
3158859520,3158859775,GB
-3158859776,3158859903,NL
+3158859776,3158859903,US
3158859904,3158860031,CZ
3158860032,3158860287,GB
3158860288,3158860543,NL
@@ -113843,7 +122973,7 @@
3158866944,3158867199,DE
3158867200,3158867455,HU
3158867456,3158867711,DE
-3158867712,3158867839,NL
+3158867712,3158867839,US
3158867840,3158867967,NO
3158867968,3158884351,AZ
3158884352,3158900735,NL
@@ -113976,7 +123106,8 @@
3160377344,3160379391,NL
3160379392,3160380415,CZ
3160380416,3160380927,ES
-3160380928,3160381439,SK
+3160380928,3160381183,CZ
+3160381184,3160381439,SK
3160381440,3160383487,UA
3160383488,3160385535,SA
3160385536,3160387583,NL
@@ -114031,9 +123162,7 @@
3161800704,3161817087,SA
3161817088,3161833471,PL
3161833472,3161835519,GR
-3161835520,3161839615,AT
-3161839616,3161839871,GR
-3161839872,3161841663,AT
+3161835520,3161841663,AT
3161841664,3161846271,GR
3161846272,3161847807,AT
3161847808,3161849855,GR
@@ -114061,7 +123190,11 @@
3161946112,3161948159,RU
3161948160,3161953279,RO
3161953280,3161953791,NL
-3161953792,3161964543,RO
+3161953792,3161954559,RO
+3161954560,3161954815,GB
+3161954816,3161955071,RO
+3161955072,3161955327,GB
+3161955328,3161964543,RO
3161964544,3161980927,ES
3161980928,3161989119,SK
3161989120,3161990143,NL
@@ -114083,7 +123216,13 @@
3162103808,3162111999,FR
3162112000,3162120191,PL
3162120192,3162128383,GB
-3162128384,3162136575,NL
+3162128384,3162129407,NL
+3162129408,3162129919,DE
+3162129920,3162132479,NL
+3162132480,3162132991,PL
+3162132992,3162134271,NL
+3162134272,3162134527,DE
+3162134528,3162136575,NL
3162136576,3162144767,IR
3162144768,3162152959,SE
3162152960,3162161151,RU
@@ -114124,7 +123263,9 @@
3162382336,3162390527,RU
3162390528,3162396927,SE
3162396928,3162397183,FI
-3162397184,3162398719,SE
+3162397184,3162398207,SE
+3162398208,3162398463,DK
+3162398464,3162398719,SE
3162398720,3162404863,NL
3162404864,3162406911,BE
3162406912,3162415103,ES
@@ -114156,8 +123297,7 @@
3162682368,3162682879,MD
3162682880,3162683135,GB
3162683136,3162683391,ES
-3162683392,3162685439,RU
-3162685440,3162686463,DE
+3162683392,3162686463,RU
3162686464,3162689535,ES
3162689536,3162701823,RU
3162701824,3162734591,MD
@@ -114209,8 +123349,8 @@
3164864512,3164864703,GB
3164864704,3164864735,ZA
3164864736,3164864767,IE
-3164864768,3164893183,GB
-3164893184,3164895231,TR
+3164864768,3164894207,GB
+3164894208,3164895231,TR
3164895232,3164897279,GB
3164897280,3164899327,IT
3164899328,3164901375,RU
@@ -114318,7 +123458,9 @@
3164953328,3164953343,PL
3164953344,3164953583,FR
3164953584,3164953599,ES
-3164953600,3164954239,FR
+3164953600,3164953603,FR
+3164953604,3164953607,BE
+3164953608,3164954239,FR
3164954240,3164954247,PL
3164954248,3164954371,FR
3164954372,3164954375,DE
@@ -114378,7 +123520,9 @@
3164961728,3164961735,ES
3164961736,3164961791,FR
3164961792,3164961807,PL
-3164961808,3164962191,FR
+3164961808,3164961823,FR
+3164961824,3164961827,ES
+3164961828,3164962191,FR
3164962192,3164962199,DE
3164962200,3164962295,FR
3164962296,3164962303,PL
@@ -114407,7 +123551,9 @@
3164968320,3164968447,GB
3164968448,3164968835,FR
3164968836,3164968839,ES
-3164968840,3164969079,FR
+3164968840,3164968851,FR
+3164968852,3164968855,CZ
+3164968856,3164969079,FR
3164969080,3164969083,PL
3164969084,3164969095,FR
3164969096,3164969099,PL
@@ -114419,7 +123565,9 @@
3164969180,3164969183,ES
3164969184,3164969191,FR
3164969192,3164969199,PT
-3164969200,3164970223,FR
+3164969200,3164969859,FR
+3164969860,3164969863,ES
+3164969864,3164970223,FR
3164970224,3164970239,GB
3164970240,3164970299,FR
3164970300,3164970303,DE
@@ -114462,9 +123610,7 @@
3164972752,3164972767,DE
3164972768,3164972783,FR
3164972784,3164972799,PL
-3164972800,3164973003,FR
-3164973004,3164973007,NL
-3164973008,3164973407,FR
+3164972800,3164973407,FR
3164973408,3164973415,GB
3164973416,3164973419,FR
3164973420,3164973423,ES
@@ -114477,11 +123623,11 @@
3164974438,3164974438,IT
3164974439,3164974463,GB
3164974464,3164974495,DE
-3164974496,3164974651,FR
+3164974496,3164974591,FR
+3164974592,3164974623,CZ
+3164974624,3164974651,FR
3164974652,3164974655,DE
-3164974656,3164974935,FR
-3164974936,3164974939,PT
-3164974940,3164975199,FR
+3164974656,3164975199,FR
3164975200,3164975215,ES
3164975216,3164975255,FR
3164975256,3164975259,PL
@@ -114505,7 +123651,8 @@
3164976232,3164976239,ES
3164976240,3164976343,FR
3164976344,3164976347,PL
-3164976348,3164976511,FR
+3164976348,3164976351,ES
+3164976352,3164976511,FR
3164976512,3164976527,LT
3164976528,3164976767,FR
3164976768,3164976783,DE
@@ -114564,7 +123711,7 @@
3165439488,3165439743,GB
3165439744,3165439999,ES
3165440000,3165440255,AT
-3165440256,3165440511,MX
+3165440256,3165440511,HK
3165440512,3165440767,JP
3165440768,3165441023,SG
3165441024,3165442047,AT
@@ -114582,11 +123729,11 @@
3165445376,3165445631,CA
3165445632,3165445887,NL
3165445888,3165446143,NO
-3165446144,3165447167,AT
+3165446144,3165447167,DE
3165447168,3165447423,CA
-3165447424,3165447679,AT
+3165447424,3165447679,IE
3165447680,3165448191,FR
-3165448192,3165448447,AT
+3165448192,3165448447,BR
3165448448,3165448703,DE
3165448704,3165448959,US
3165448960,3165449215,CH
@@ -114596,8 +123743,7 @@
3165451776,3165452031,AT
3165452032,3165452287,IL
3165452288,3165452543,AT
-3165452544,3165452799,DE
-3165452800,3165453055,AT
+3165452544,3165453055,DE
3165453056,3165453311,US
3165453312,3165453567,PE
3165453568,3165453823,US
@@ -114965,14 +124111,12 @@
3169056768,3169058815,EE
3169058816,3169091583,DK
3169091584,3169124351,IT
-3169124352,3169153163,RO
-3169153164,3169153164,IR
-3169153165,3169157119,RO
+3169124352,3169157119,IR
3169157120,3169189887,SY
3169189888,3169222655,UA
3169222656,3169255423,SI
-3169255424,3169275903,KW
-3169275904,3169277951,CY
+3169255424,3169276927,KW
+3169276928,3169277951,CY
3169277952,3169278991,KW
3169278992,3169279007,SA
3169279008,3169279231,KW
@@ -114996,9 +124140,7 @@
3169583104,3169648639,KW
3169648640,3169714175,MD
3169714176,3169779711,FI
-3169779712,3169812479,UA
-3169812480,3169820671,ES
-3169820672,3169826815,UA
+3169779712,3169826815,UA
3169826816,3169827839,ES
3169827840,3169828607,UA
3169828608,3169828863,CZ
@@ -115013,7 +124155,7 @@
3169849856,3169850367,SE
3169850368,3169851391,RO
3169851392,3169853439,NL
-3169853440,3169854463,AU
+3169853440,3169854463,GB
3169854464,3169855487,ES
3169855488,3169855999,US
3169856000,3169856255,IT
@@ -115127,11 +124269,7 @@
3170298880,3170303999,KZ
3170304000,3170312191,SY
3170312192,3170320383,RU
-3170320384,3170321661,JO
-3170321662,3170321662,GB
-3170321663,3170321919,JO
-3170321920,3170322175,IT
-3170322176,3170327593,JO
+3170320384,3170327593,JO
3170327594,3170327594,US
3170327595,3170328575,JO
3170328576,3170336767,UA
@@ -115145,21 +124283,19 @@
3170500608,3170631679,PT
3170631680,3170664447,PL
3170664448,3170697215,HR
-3170697216,3170697471,IR
-3170697472,3170705407,AU
+3170697216,3170697471,AU
+3170697472,3170697727,IR
+3170697728,3170705407,AU
3170705408,3170721791,IR
3170721792,3170723839,AU
3170723840,3170727935,IR
-3170727936,3170729951,AU
-3170729952,3170729983,IR
+3170727936,3170729983,AU
3170729984,3170762751,AZ
3170762752,3170795519,RU
3170795520,3170828287,BG
3170828288,3170861055,RU
3170861056,3170893823,RS
-3170893824,3179124223,BR
-3179124224,3179124479,PE
-3179124480,3179282431,BR
+3170893824,3179282431,BR
3179282432,3183751167,MX
3183751168,3183755263,US
3183755264,3184116735,MX
@@ -115194,7 +124330,7 @@
3187843072,3187846143,AW
3187846144,3187851263,CW
3187851264,3187855359,PY
-3187855360,3187857407,PA
+3187855360,3187857407,CO
3187857408,3187859455,CR
3187859456,3187863551,PA
3187863552,3187908607,AR
@@ -115249,23 +124385,19 @@
3187945344,3187945471,HN
3187945472,3187945983,GT
3187945984,3187946111,HN
-3187946112,3187946495,GT
-3187946496,3187947007,HN
-3187947008,3187947363,GT
+3187946112,3187947363,GT
3187947364,3187947367,HN
3187947368,3187947743,GT
3187947744,3187947751,HN
3187947752,3187947895,GT
3187947896,3187947899,HN
-3187947900,3187948031,GT
-3187948032,3187948159,HN
-3187948160,3187948799,GT
+3187947900,3187948799,GT
3187948800,3187948927,HN
3187948928,3187949023,GT
3187949024,3187949031,HN
3187949032,3187949239,GT
-3187949240,3187949247,HN
-3187949248,3187949567,GT
+3187949240,3187949311,HN
+3187949312,3187949567,GT
3187949568,3187949816,BQ
3187949817,3187949817,US
3187949818,3187950126,BQ
@@ -115358,8 +124490,8 @@
3188553728,3188555775,CW
3188555776,3188572159,CL
3188572160,3188576255,CO
-3188576256,3188588543,AR
-3188588544,3188589567,US
+3188576256,3188589055,AR
+3188589056,3188589567,US
3188589568,3188589823,CO
3188589824,3188590079,EC
3188590080,3188590335,PT
@@ -115493,7 +124625,15 @@
3193575168,3193575295,PE
3193575296,3193575311,CO
3193575312,3193575327,PE
-3193575328,3193590655,CO
+3193575328,3193577164,CO
+3193577165,3193577167,PE
+3193577168,3193577171,CO
+3193577172,3193577172,PE
+3193577173,3193577173,CO
+3193577174,3193577175,PE
+3193577176,3193577179,CO
+3193577180,3193577181,PE
+3193577182,3193590655,CO
3193590656,3193590783,EC
3193590784,3193592319,CO
3193592320,3193592575,EC
@@ -115501,9 +124641,7 @@
3193595392,3193595647,EC
3193595648,3193604351,CO
3193604352,3193604607,EC
-3193604608,3193606527,CO
-3193606528,3193606655,EC
-3193606656,3193606783,CO
+3193604608,3193606783,CO
3193606784,3193606911,EC
3193606912,3193617151,CO
3193617152,3193617407,EC
@@ -115517,10 +124655,10 @@
3193623040,3193623551,EC
3193623552,3193625599,CO
3193625600,3193625855,EC
-3193625856,3193626111,US
-3193626112,3193626367,CO
-3193626368,3193626623,US
-3193626624,3193628671,CO
+3193625856,3193625983,US
+3193625984,3193625998,CO
+3193625999,3193626111,US
+3193626112,3193628671,CO
3193628672,3193628927,EC
3193628928,3193634687,CO
3193634688,3193634815,EC
@@ -115578,17 +124716,102 @@
3194127232,3194127359,BR
3194127360,3194128383,AR
3194128384,3194129407,NI
-3194129408,3194129663,AR
+3194129408,3194129486,AR
+3194129487,3194129487,BR
+3194129488,3194129509,AR
+3194129510,3194129511,BR
+3194129512,3194129518,AR
+3194129519,3194129519,BR
+3194129520,3194129523,AR
+3194129524,3194129527,BR
+3194129528,3194129531,AR
+3194129532,3194129535,BR
+3194129536,3194129539,AR
+3194129540,3194129543,BR
+3194129544,3194129547,AR
+3194129548,3194129551,BR
+3194129552,3194129555,AR
+3194129556,3194129557,BR
+3194129558,3194129558,AR
+3194129559,3194129559,BR
+3194129560,3194129571,AR
+3194129572,3194129572,BR
+3194129573,3194129573,AR
+3194129574,3194129600,BR
+3194129601,3194129603,AR
+3194129604,3194129607,BR
+3194129608,3194129611,AR
+3194129612,3194129614,BR
+3194129615,3194129619,AR
+3194129620,3194129620,BR
+3194129621,3194129621,AR
+3194129622,3194129623,BR
+3194129624,3194129627,AR
+3194129628,3194129631,BR
+3194129632,3194129635,AR
+3194129636,3194129639,BR
+3194129640,3194129663,AR
3194129664,3194129671,BR
-3194129672,3194130047,AR
+3194129672,3194129924,AR
+3194129925,3194129927,BR
+3194129928,3194129931,AR
+3194129932,3194129932,BR
+3194129933,3194129933,AR
+3194129934,3194129935,BR
+3194129936,3194129939,AR
+3194129940,3194129943,BR
+3194129944,3194129948,AR
+3194129949,3194129951,BR
+3194129952,3194130011,AR
+3194130012,3194130032,BR
+3194130033,3194130033,AR
+3194130034,3194130039,BR
+3194130040,3194130047,AR
3194130048,3194130175,CO
-3194130176,3194130303,AR
+3194130176,3194130243,AR
+3194130244,3194130258,CL
+3194130259,3194130262,AR
+3194130263,3194130267,CL
+3194130268,3194130303,AR
3194130304,3194130431,BR
-3194130432,3194130943,AR
+3194130432,3194130559,CO
+3194130560,3194130943,AR
3194130944,3194131455,BR
3194131456,3194134527,AR
-3194134528,3194135039,CL
-3194135040,3194135551,AR
+3194134528,3194134557,CL
+3194134558,3194134559,PE
+3194134560,3194134563,CL
+3194134564,3194134567,PE
+3194134568,3194134571,CL
+3194134572,3194134575,PE
+3194134576,3194134579,CL
+3194134580,3194134583,PE
+3194134584,3194134587,CL
+3194134588,3194134591,PE
+3194134592,3194134595,CL
+3194134596,3194134599,PE
+3194134600,3194134851,CL
+3194134852,3194134861,PE
+3194134862,3194134879,CL
+3194134880,3194134881,PE
+3194134882,3194134885,CL
+3194134886,3194134889,PE
+3194134890,3194134893,CL
+3194134894,3194134897,PE
+3194134898,3194135039,CL
+3194135040,3194135499,AR
+3194135500,3194135503,CL
+3194135504,3194135507,AR
+3194135508,3194135511,CL
+3194135512,3194135515,AR
+3194135516,3194135519,CL
+3194135520,3194135523,AR
+3194135524,3194135527,CL
+3194135528,3194135532,AR
+3194135533,3194135535,CL
+3194135536,3194135539,AR
+3194135540,3194135540,CL
+3194135541,3194135551,AR
3194135552,3194136063,BR
3194136064,3194136575,AR
3194136576,3194137087,BR
@@ -115604,7 +124827,8 @@
3194165248,3194175487,SV
3194175488,3194177535,AR
3194177536,3194179583,EC
-3194179584,3194181631,AR
+3194179584,3194180607,AR
+3194180608,3194181631,US
3194181632,3194182655,CL
3194182656,3194183679,BO
3194183680,3194187775,UY
@@ -115634,7 +124858,9 @@
3194449848,3194449855,PE
3194449856,3194450263,CO
3194450264,3194450271,CL
-3194450272,3194451415,CO
+3194450272,3194450879,CO
+3194450880,3194450887,PE
+3194450888,3194451415,CO
3194451416,3194451423,EC
3194451424,3194452375,CO
3194452376,3194452383,PE
@@ -115845,9 +125071,7 @@
3195768832,3195772927,AR
3195772928,3195781119,VE
3195781120,3195785215,BR
-3195785216,3195785407,HN
-3195785408,3195785439,DE
-3195785440,3195786239,HN
+3195785216,3195786239,HN
3195786240,3195786287,US
3195786288,3195786295,ES
3195786296,3195786751,US
@@ -115943,7 +125167,8 @@
3199811584,3199819775,SX
3199819776,3199820799,CR
3199820800,3199822847,AR
-3199822848,3199823615,HN
+3199822848,3199823359,US
+3199823360,3199823615,HN
3199823616,3199823711,US
3199823712,3199823719,CL
3199823720,3199823871,US
@@ -116003,8 +125228,8 @@
3201898496,3201900543,CO
3201900544,3201903615,CL
3201903616,3201904639,AR
-3201904640,3201908735,CO
-3201908736,3201916927,AR
+3201904640,3201910783,CO
+3201910784,3201916927,AR
3201916928,3201917183,CO
3201917184,3201917439,AR
3201917440,3201917695,CO
@@ -116012,21 +125237,29 @@
3201917860,3201917863,CO
3201917864,3201917879,AR
3201917880,3201917887,CO
-3201917888,3201917951,AR
-3201917952,3201918719,CO
+3201917888,3201918463,AR
+3201918464,3201918719,CO
3201918720,3201918795,AR
3201918796,3201918799,CO
-3201918800,3201918975,AR
-3201918976,3201920511,CO
+3201918800,3201919135,AR
+3201919136,3201919151,CO
+3201919152,3201919231,AR
+3201919232,3201919487,CO
+3201919488,3201919687,AR
+3201919688,3201919691,CO
+3201919692,3201919999,AR
+3201920000,3201920511,CO
3201920512,3201920639,AR
-3201920640,3201920671,CO
-3201920672,3201921319,AR
-3201921320,3201923071,CO
-3201923072,3201924351,AR
-3201924352,3201924607,CR
-3201924608,3201924927,AR
-3201924928,3201924991,PA
-3201924992,3201925119,AR
+3201920640,3201920655,CO
+3201920656,3201921319,AR
+3201921320,3201921327,CO
+3201921328,3201921407,AR
+3201921408,3201923071,CO
+3201923072,3201924095,AR
+3201924096,3201924607,CR
+3201924608,3201924967,AR
+3201924968,3201924975,PA
+3201924976,3201925119,AR
3201925120,3201957887,CL
3201957888,3202088959,PA
3202088960,3202215167,AR
@@ -116036,10 +125269,14 @@
3202351104,3202875391,AR
3202875392,3203399679,PE
3203399680,3203465215,CO
-3203465216,3203530751,CR
+3203465216,3203494271,CR
+3203494272,3203494399,CO
+3203494400,3203530751,CR
3203530752,3203531519,CO
3203531520,3203531775,PA
-3203531776,3203532799,CO
+3203531776,3203532351,CO
+3203532352,3203532415,PA
+3203532416,3203532799,CO
3203532800,3203534847,PA
3203534848,3203535871,CO
3203535872,3203536383,PA
@@ -116065,15 +125302,12 @@
3203566592,3203566847,PA
3203566848,3203568639,CO
3203568640,3203569663,SV
-3203569664,3203570303,CO
-3203570304,3203570431,SV
+3203569664,3203570431,CO
3203570432,3203570687,CR
3203570688,3203571199,CO
3203571200,3203571711,SV
3203571712,3203571967,CO
-3203571968,3203572223,SV
-3203572224,3203572351,CO
-3203572352,3203572479,SV
+3203571968,3203572479,SV
3203572480,3203661823,CO
3203661824,3203923967,AR
3203923968,3204448255,CO
@@ -116117,7 +125351,11 @@
3210743568,3210743615,BR
3210743616,3210743679,FR
3210743680,3210743711,BR
-3210743712,3210743807,CL
+3210743712,3210743779,CL
+3210743780,3210743783,BR
+3210743784,3210743787,CL
+3210743788,3210743791,BR
+3210743792,3210743807,CL
3210743808,3210744063,US
3210744064,3210744079,TR
3210744080,3210744087,BR
@@ -116127,8 +125365,7 @@
3210744192,3210744319,BR
3210744320,3210744575,US
3210744576,3210744591,BE
-3210744592,3210744607,BR
-3210744608,3210744831,CL
+3210744592,3210744831,BR
3210744832,3210744863,NZ
3210744864,3210744959,CL
3210744960,3210745087,BR
@@ -116156,7 +125393,9 @@
3210755072,3210755583,MD
3210755584,3210755839,US
3210755840,3210755855,MY
-3210755856,3210756095,BR
+3210755856,3210755871,BR
+3210755872,3210755903,CL
+3210755904,3210756095,BR
3210756096,3210756351,SG
3210756352,3210756607,US
3210756608,3210756863,DE
@@ -116201,8 +125440,7 @@
3210773520,3210773759,BR
3210773760,3210774271,US
3210774272,3210774287,NO
-3210774288,3210774399,BR
-3210774400,3210774527,CL
+3210774288,3210774527,BR
3210774528,3210774783,US
3210774784,3210774799,IT
3210774800,3210774815,BR
@@ -116284,7 +125522,7 @@
3210803593,3210803711,RU
3210803712,3210804479,DE
3210804480,3210805247,US
-3210805248,3210809343,PA
+3210805248,3210809343,CO
3210809344,3210810367,VE
3210810368,3210811391,PA
3210811392,3210817535,AR
@@ -116294,7 +125532,8 @@
3210825728,3210827775,BZ
3210827776,3210829823,DO
3210829824,3210830847,AR
-3210830848,3210831871,BR
+3210830848,3210831359,PE
+3210831360,3210831871,BR
3210831872,3210832895,DO
3210832896,3210835967,AR
3210835968,3210838015,PY
@@ -116310,8 +125549,7 @@
3210926080,3210928127,AR
3210928128,3210936319,NI
3210936320,3211067391,EC
-3211067392,3211071487,US
-3211071488,3211071743,NL
+3211067392,3211071743,US
3211071744,3211071999,DE
3211072000,3211072027,US
3211072028,3211072057,BR
@@ -116383,8 +125621,8 @@
3211085888,3211085903,GB
3211085904,3211085919,DE
3211085920,3211086095,CL
-3211086096,3211086111,DE
-3211086112,3211086335,CL
+3211086096,3211086143,DE
+3211086144,3211086335,CL
3211086336,3211086351,FR
3211086352,3211086367,DE
3211086368,3211086463,CL
@@ -116588,9 +125826,7 @@
3219802176,3219802303,US
3219802304,3219802367,BR
3219802368,3219802399,US
-3219802400,3219802431,BR
-3219802432,3219802495,US
-3219802496,3219802623,BR
+3219802400,3219802623,BR
3219802624,3219802639,NL
3219802640,3219819007,BR
3219819008,3219819519,JP
@@ -116686,9 +125922,7 @@
3221577984,3221578239,IT
3221578240,3221578313,US
3221578314,3221578314,JP
-3221578315,3221582335,US
-3221582336,3221582847,GB
-3221582848,3221589503,US
+3221578315,3221589503,US
3221589504,3221589759,FR
3221589760,3221590015,US
3221590016,3221590271,CA
@@ -116733,7 +125967,8 @@
3222025984,3222027775,US
3222027776,3222028031,CA
3222028032,3222030335,US
-3222030336,3222030847,GB
+3222030336,3222030591,NL
+3222030592,3222030847,GB
3222030848,3222031359,US
3222031360,3222031615,AU
3222031616,3222031871,IT
@@ -116760,7 +125995,8 @@
3222066944,3222067199,CA
3222067200,3222067455,US
3222067456,3222067967,CH
-3222067968,3222071295,US
+3222067968,3222071039,US
+3222071040,3222071295,GB
3222071296,3222071551,PT
3222071552,3222072063,US
3222072064,3222072319,SE
@@ -116805,11 +126041,7 @@
3222524416,3222524927,SG
3222524928,3222525183,US
3222525184,3222525439,DE
-3222525440,3222531327,US
-3222531328,3222531583,IN
-3222531584,3222534655,US
-3222534656,3222535167,IL
-3222535168,3222806527,US
+3222525440,3222806527,US
3222806528,3222814719,CA
3222814720,3222875647,US
3222875648,3222875903,SG
@@ -116826,7 +126058,9 @@
3222953728,3222953983,US
3222953984,3222954239,JP
3222954240,3222956287,US
-3222956288,3222962431,FI
+3222956288,3222957567,FI
+3222957568,3222957823,BD
+3222957824,3222962431,FI
3222962432,3222963455,US
3222963456,3222964223,FI
3222964224,3222968831,US
@@ -116853,8 +126087,8 @@
3223204864,3223205119,CA
3223205120,3223214079,US
3223214080,3223214591,CA
-3223214592,3223216127,US
-3223216128,3223217151,CA
+3223214592,3223216383,US
+3223216384,3223217151,CA
3223217152,3223223295,US
3223223296,3223223551,AI
3223223552,3223227903,US
@@ -117119,7 +126353,7 @@
3223906304,3223909375,CA
3223909376,3223911935,US
3223911936,3223912191,CA
-3223912192,3223938559,US
+3223912192,3223938815,US
3223938816,3223946239,GB
3223946240,3223947519,CH
3223947520,3223948287,US
@@ -117227,9 +126461,7 @@
3224370432,3224370687,CA
3224370688,3224370943,US
3224370944,3224371199,CA
-3224371200,3224373247,US
-3224373248,3224374015,AU
-3224374016,3224379135,US
+3224371200,3224379135,US
3224379136,3224379391,DE
3224379392,3224398591,US
3224398592,3224398847,DE
@@ -117294,7 +126526,8 @@
3224776448,3224776703,GB
3224776704,3224777983,DE
3224777984,3224778239,US
-3224778752,3224779775,ES
+3224778752,3224779263,NL
+3224779264,3224779775,GB
3224779776,3224785151,DE
3224785152,3224791039,US
3224791040,3224791295,DE
@@ -117393,9 +126626,7 @@
3224908544,3224908799,CA
3224908800,3224921087,US
3224921088,3224921599,NZ
-3224921600,3224943103,US
-3224943104,3224943615,NL
-3224943616,3224957951,US
+3224921600,3224957951,US
3224957952,3224958207,CA
3224958208,3225028863,US
3225028864,3225031423,JP
@@ -117546,8 +126777,8 @@
3225673728,3225679871,US
3225679872,3225680127,AU
3225680128,3225680383,GR
-3225680384,3225680895,CA
-3225680896,3225681663,US
+3225680384,3225680639,CA
+3225680640,3225681663,US
3225681664,3225681919,CA
3225681920,3225682943,DE
3225682944,3225683199,AT
@@ -117839,8 +127070,7 @@
3226385152,3226397695,US
3226397696,3226398719,DE
3226398720,3226473471,US
-3226473472,3226473727,NL
-3226473728,3226473983,PT
+3226473472,3226473983,PT
3226473984,3226474495,US
3226474496,3226474751,CL
3226474752,3226476287,US
@@ -117936,7 +127166,7 @@
3226636288,3226637823,US
3226637824,3226638079,CA
3226638080,3226638591,US
-3226638592,3226638847,GB
+3226638592,3226638847,NL
3226638848,3226639615,US
3226639616,3226640127,AT
3226640128,3226640639,US
@@ -117957,7 +127187,7 @@
3226695680,3226695935,US
3226695936,3226696191,CA
3226696448,3226696703,AU
-3226697728,3226699775,US
+3226696704,3226699775,US
3226699776,3226701823,CA
3226701824,3226705919,US
3226705920,3226706175,FR
@@ -118113,13 +127343,11 @@
3227025920,3227026175,GB
3227026176,3227026687,US
3227026688,3227026943,GB
-3227026944,3227026955,AU
-3227026956,3227026957,US
-3227026958,3227027199,AU
+3227026944,3227027199,AU
3227027200,3227040511,US
3227040512,3227040767,AU
3227040768,3227041279,US
-3227041280,3227041535,NZ
+3227041280,3227041535,AU
3227041536,3227042815,US
3227042816,3227043071,IT
3227043072,3227044863,US
@@ -118197,8 +127425,8 @@
3227318272,3227320319,JP
3227320320,3227362047,FR
3227362048,3227362303,US
-3227362304,3227363327,GB
-3227363328,3227385855,FR
+3227362304,3227362559,GB
+3227362560,3227385855,FR
3227385856,3227391999,US
3227392000,3227392255,PT
3227392256,3227393023,US
@@ -118243,7 +127471,7 @@
3227439104,3227439615,AU
3227439616,3227439871,MU
3227439872,3227440127,US
-3227440128,3227440383,NL
+3227440128,3227440383,IT
3227440384,3227442175,US
3227442432,3227442687,RU
3227442688,3227443711,US
@@ -118364,7 +127592,9 @@
3227576576,3227576831,US
3227576832,3227579391,MU
3227579392,3227579647,US
-3227579648,3227580927,ZA
+3227579648,3227580415,ZA
+3227580416,3227580671,MU
+3227580672,3227580927,ZA
3227580928,3227581695,MU
3227581696,3227582207,ZA
3227582208,3227647999,US
@@ -118552,7 +127782,7 @@
3227844096,3227844351,AR
3227844352,3227844607,US
3227844608,3227844863,CA
-3227844864,3227845119,NL
+3227844864,3227845119,ES
3227845120,3227845631,US
3227845632,3227845887,RU
3227845888,3227846655,US
@@ -118669,7 +127899,7 @@
3228011520,3228013311,US
3228013312,3228013567,PT
3228013568,3228045055,US
-3228045056,3228045311,KR
+3228045056,3228045311,AU
3228045312,3228047103,US
3228047104,3228047359,NL
3228047360,3228048383,US
@@ -118932,7 +128162,11 @@
3228833792,3228965375,IL
3228965376,3228965631,US
3228965632,3229024255,IL
-3229024256,3229089791,US
+3229024256,3229065215,US
+3229065216,3229065471,DE
+3229065472,3229067007,US
+3229067008,3229067263,NL
+3229067264,3229089791,US
3229089792,3229090047,CA
3229090048,3229092351,US
3229092352,3229093631,AU
@@ -118965,7 +128199,9 @@
3229173504,3229173759,IT
3229173760,3229176319,SE
3229176320,3229176575,US
-3229176576,3229182463,SE
+3229176576,3229177599,SE
+3229177600,3229177855,AT
+3229177856,3229182463,SE
3229182464,3229182975,GB
3229182976,3229183999,SE
3229184000,3229184511,GB
@@ -119032,7 +128268,7 @@
3229264896,3229265919,US
3229265920,3229266175,AU
3229266176,3229266943,US
-3229266944,3229267199,NZ
+3229266944,3229267199,AU
3229267200,3229273599,US
3229273600,3229273855,CA
3229273856,3229275647,US
@@ -119100,8 +128336,7 @@
3229814272,3229815807,US
3229815808,3229816063,DE
3229816064,3229817087,US
-3229817088,3229817343,AU
-3229817344,3229817599,NL
+3229817088,3229817599,NL
3229817600,3229818623,AU
3229818624,3229818879,US
3229818880,3229820927,JM
@@ -119176,7 +128411,7 @@
3229947392,3229948927,US
3229948928,3229949183,IT
3229949184,3229949695,US
-3229949696,3229949951,NZ
+3229949696,3229949951,AU
3229949952,3229950207,NO
3229950208,3229950975,US
3229950976,3229951231,IL
@@ -119322,7 +128557,7 @@
3230222080,3230222335,NL
3230222336,3230223103,US
3230223104,3230223359,GB
-3230223360,3230223615,CH
+3230223360,3230223615,US
3230223616,3230225919,LU
3230225920,3230226175,AU
3230226176,3230226431,ES
@@ -119331,39 +128566,28 @@
3230226944,3230227199,US
3230227200,3230227455,GB
3230227456,3230227711,US
-3230227712,3230228223,GB
+3230227712,3230227967,GB
+3230227968,3230228223,US
3230228224,3230228479,ES
3230228480,3230228735,AU
-3230228736,3230229759,US
-3230229760,3230230015,DE
-3230230016,3230236415,US
-3230236416,3230236671,GB
+3230228736,3230236671,US
3230236672,3230236927,CA
3230236928,3230241535,US
3230241536,3230241791,GB
3230241792,3230242047,CH
-3230242048,3230244351,US
-3230244352,3230244607,CA
+3230242048,3230244607,US
3230244608,3230245119,FR
-3230245120,3230245887,SE
+3230245120,3230245375,US
+3230245376,3230245887,SE
3230245888,3230246911,US
3230246912,3230247167,CH
3230247168,3230247935,US
3230247936,3230248191,AU
-3230248192,3230254847,US
-3230254848,3230255103,SE
-3230255104,3230255359,US
-3230255360,3230255615,ES
-3230255616,3230257919,US
-3230257920,3230258175,CH
-3230258176,3230258431,US
-3230258432,3230258687,CH
-3230258688,3230258943,US
+3230248192,3230258943,US
3230258944,3230259199,CH
3230259200,3230269695,US
3230269696,3230271743,GB
-3230271744,3230272511,US
-3230273536,3230291455,US
+3230271744,3230291455,US
3230291456,3230291711,PT
3230291712,3230295039,US
3230295040,3230295295,AU
@@ -119415,8 +128639,8 @@
3230370816,3230372607,CA
3230372608,3230372863,US
3230372864,3230374399,CA
-3230374400,3230374655,US
-3230374656,3230383359,CA
+3230374400,3230374911,US
+3230374912,3230383359,CA
3230383360,3230383615,US
3230383616,3230384127,CA
3230384128,3230384383,MF
@@ -119490,7 +128714,8 @@
3230667776,3230668799,RO
3230668800,3230669823,US
3230669824,3230670847,RU
-3230670848,3230671871,DE
+3230670848,3230671103,DE
+3230671104,3230671871,US
3230671872,3230673919,RU
3230673920,3230674943,CZ
3230674944,3230675967,RU
@@ -119513,7 +128738,8 @@
3230733312,3230735359,NL
3230735360,3230736383,DE
3230736384,3230737407,FR
-3230737408,3230738431,DE
+3230737408,3230738175,US
+3230738176,3230738431,DE
3230738432,3230739455,ES
3230739456,3230740479,DE
3230740480,3230741503,SM
@@ -119602,7 +128828,7 @@
3230868736,3230870015,US
3230870016,3230870271,PL
3230870272,3230873343,US
-3230873344,3230873599,HK
+3230873344,3230873599,SG
3230873600,3230878719,US
3230878720,3230879487,PT
3230879488,3230879743,FR
@@ -119814,7 +129040,9 @@
3231183872,3231184895,CN
3231184896,3231185407,US
3231185408,3231185919,CN
-3231185920,3231188479,US
+3231185920,3231186943,US
+3231186944,3231187199,NL
+3231187200,3231188479,US
3231188480,3231188735,NO
3231188736,3231190527,US
3231190528,3231190783,GB
@@ -119911,7 +129139,7 @@
3231283456,3231284991,US
3231284992,3231285247,PL
3231285248,3231291647,US
-3231291648,3231291903,NL
+3231291648,3231291903,GB
3231291904,3231292159,US
3231292160,3231292415,MX
3231292416,3231292927,US
@@ -119982,9 +129210,7 @@
3231491840,3231492095,GB
3231492096,3231492351,US
3231492352,3231492607,GB
-3231492608,3231493631,US
-3231493632,3231493887,CH
-3231493888,3231500031,US
+3231492608,3231500031,US
3231500032,3231500287,BM
3231500288,3231502079,US
3231502080,3231502335,AU
@@ -120004,9 +129230,9 @@
3231514880,3231515647,NO
3231515648,3231516671,US
3231516672,3231519231,SE
-3231519232,3231521471,US
-3231521472,3231521479,AU
-3231521480,3231528191,US
+3231519232,3231520767,US
+3231520768,3231521791,AU
+3231521792,3231528191,US
3231528192,3231528287,CA
3231528288,3231528303,US
3231528304,3231528311,CA
@@ -120036,7 +129262,7 @@
3231547648,3231547903,NO
3231547904,3231549951,US
3231549952,3231550207,JP
-3231550208,3231550719,DE
+3231550208,3231550719,US
3231550720,3231550975,GB
3231550976,3231551231,US
3231551232,3231551999,CA
@@ -120159,7 +129385,7 @@
3231743744,3231743999,US
3231744000,3231744255,BR
3231744256,3231747583,US
-3231747584,3231747839,NL
+3231747584,3231747839,DE
3231747840,3231748095,GB
3231748096,3231750143,US
3231750144,3231750399,NL
@@ -120204,7 +129430,9 @@
3231801344,3231809535,CA
3231809536,3231810047,NZ
3231810048,3231842303,US
-3231842304,3231843327,RU
+3231842304,3231842567,RU
+3231842568,3231842568,US
+3231842569,3231843327,RU
3231843328,3231844351,NO
3231844352,3231845375,RU
3231845376,3231846399,ES
@@ -120325,8 +129553,7 @@
3232112640,3232113663,PL
3232113664,3232114687,IQ
3232114688,3232115711,TR
-3232115712,3232115967,NL
-3232115968,3232116735,GB
+3232115712,3232116735,GB
3232116736,3232129023,DE
3232129024,3232130047,NL
3232130048,3232131071,UA
@@ -120357,7 +129584,9 @@
3232162816,3232163839,UZ
3232163840,3232165887,RU
3232165888,3232166911,AT
-3232166912,3232167935,DE
+3232166912,3232167167,DE
+3232167168,3232167423,AL
+3232167424,3232167935,DE
3232167936,3232168959,GB
3232169216,3232169727,DE
3232169728,3232169983,PL
@@ -120533,7 +129762,9 @@
3233453472,3233453567,CA
3233453568,3233453631,IT
3233453632,3233454079,US
-3233454080,3233454399,CA
+3233454080,3233454335,CA
+3233454336,3233454351,US
+3233454352,3233454399,CA
3233454400,3233454415,US
3233454416,3233454423,CA
3233454424,3233454447,US
@@ -120785,8 +130016,7 @@
3233651456,3233651967,US
3233651968,3233652223,GB
3233652224,3233652479,US
-3233652736,3233652991,NL
-3233652992,3233654271,US
+3233652736,3233654271,US
3233654272,3233655551,GB
3233655552,3233663487,US
3233663488,3233663999,GB
@@ -120854,8 +130084,7 @@
3233763072,3233763327,CA
3233763328,3233765887,US
3233765888,3233766143,CA
-3233766144,3233768447,US
-3233768448,3233768703,CA
+3233766144,3233768703,US
3233768704,3233768959,PR
3233768960,3233779455,US
3233779456,3233779711,CA
@@ -120863,19 +130092,15 @@
3233781504,3233781759,PR
3233781760,3233783807,US
3233783808,3233784063,PR
-3233784064,3233784319,CA
-3233784320,3233786111,US
+3233784064,3233786111,US
3233786112,3233786367,PR
-3233786368,3233800447,US
-3233800448,3233800703,CA
-3233800704,3233801983,US
+3233786368,3233801983,US
3233801984,3233802239,CA
3233802240,3233802495,US
3233802496,3233802751,CA
3233802752,3233808383,US
3233808384,3233873919,TW
-3233873920,3233874943,AU
-3233874944,3233901055,US
+3233873920,3233901055,US
3233901056,3233901567,IN
3233901568,3233903615,US
3233903616,3233903743,GB
@@ -120883,9 +130108,9 @@
3233903808,3233903871,GB
3233903872,3233907711,US
3233907712,3233907967,HK
-3233907968,3233908479,US
-3233908480,3233908735,SG
-3233908736,3233939455,US
+3233907968,3233936127,US
+3233936128,3233936383,GB
+3233936384,3233939455,US
3233939456,3234004991,FI
3234005248,3234005503,GB
3234005760,3234006015,CA
@@ -120991,7 +130216,9 @@
3234172928,3234173951,US
3234173952,3234175999,CA
3234176000,3234177279,US
-3234177280,3234187007,CA
+3234177280,3234184447,CA
+3234184448,3234184703,LK
+3234184704,3234187007,CA
3234187008,3234187519,US
3234187520,3234189055,CA
3234189056,3234189311,US
@@ -121127,8 +130354,8 @@
3234234240,3234234247,CA
3234234248,3234234271,US
3234234272,3234234287,CA
-3234234288,3234238975,US
-3234238976,3234239487,MY
+3234234288,3234238463,US
+3234238464,3234239487,MY
3234239488,3234240255,US
3234240256,3234240511,IE
3234240512,3234267135,US
@@ -121194,8 +130421,8 @@
3234726400,3234726911,US
3234726912,3234727935,CA
3234727936,3234733055,US
-3234733056,3234733311,CA
-3234733312,3234739711,US
+3234733056,3234733567,CA
+3234733568,3234739711,US
3234739712,3234740223,CA
3234740224,3234745599,US
3234745600,3234746879,GB
@@ -121336,27 +130563,19 @@
3235928320,3235928575,CA
3235928576,3235932159,US
3235932160,3235932415,CA
-3235932416,3235932671,US
-3235932672,3235932927,CA
-3235932928,3235937023,US
+3235932416,3235937023,US
3235937024,3235937279,CA
-3235937280,3235937791,US
-3235937792,3235938047,CA
-3235938048,3235941631,US
+3235937280,3235941631,US
3235941632,3235941887,CA
3235941888,3235946751,US
3235946752,3235947007,CA
-3235947008,3235951871,US
-3235951872,3235952127,CA
-3235952128,3235959551,US
+3235947008,3235959551,US
3235959552,3235959807,CA
3235959808,3235962111,US
3235962112,3235962367,CA
3235962368,3235968511,US
3235968512,3235968767,CA
-3235968768,3235970559,US
-3235970560,3235970815,CA
-3235970816,3235971071,US
+3235968768,3235971071,US
3235971072,3235971327,CA
3235971328,3235996671,US
3235996672,3235997183,CA
@@ -121384,14 +130603,18 @@
3236157952,3236158207,GB
3236158208,3236167935,US
3236167936,3236175871,CA
-3236175872,3236200447,US
+3236175872,3236192767,US
+3236192768,3236193279,PR
+3236193280,3236200447,US
3236200448,3236233215,MY
3236233216,3236239359,US
3236239360,3236241407,CA
3236241408,3236267519,US
3236267520,3236268031,DE
3236268032,3236268543,ES
-3236268544,3236272639,US
+3236268544,3236269311,US
+3236269312,3236269567,JP
+3236269568,3236272639,US
3236272640,3236272895,HK
3236272896,3236273919,US
3236273920,3236274175,DE
@@ -121409,7 +130632,9 @@
3236287744,3236287999,CO
3236288000,3236291071,US
3236291072,3236291327,GB
-3236291328,3236302847,US
+3236291328,3236291583,US
+3236291584,3236292095,BR
+3236292096,3236302847,US
3236306944,3236307711,US
3236307712,3236307967,CA
3236307968,3236310271,US
@@ -121422,11 +130647,7 @@
3236312832,3236313087,VG
3236313088,3236314367,US
3236314368,3236314623,GB
-3236314624,3236315135,US
-3236315136,3236315647,CA
-3236315648,3236315648,US
-3236315649,3236317183,CA
-3236317184,3236319743,US
+3236314624,3236319743,US
3236319744,3236319999,ES
3236320000,3236365567,US
3236365568,3236365823,CA
@@ -121480,9 +130701,7 @@
3236429312,3236429567,MU
3236429568,3236462591,US
3236462592,3236470783,AU
-3236470784,3236560895,US
-3236560896,3236561151,CA
-3236561152,3236566783,US
+3236470784,3236566783,US
3236566784,3236567039,CA
3236567040,3236604671,US
3236604672,3236604927,CA
@@ -121495,9 +130714,7 @@
3236619776,3236620031,US
3236620288,3236623615,US
3236623616,3236623871,AU
-3236623872,3236625919,US
-3236625920,3236626175,CA
-3236626176,3236638719,US
+3236623872,3236638719,US
3236638720,3236642815,BB
3236642816,3236659199,US
3236659200,3236691967,CA
@@ -121818,8 +131035,7 @@
3237554432,3237554434,SG
3237554435,3237554435,US
3237554436,3237554463,SG
-3237554464,3237554687,AU
-3237554688,3237554943,US
+3237554464,3237554943,US
3237554944,3237555199,SG
3237555200,3237568511,US
3237568512,3237572607,CA
@@ -121829,15 +131045,15 @@
3237613568,3237614591,CA
3237614592,3237615615,US
3237615616,3237616895,CA
-3237616896,3237623807,US
-3237623808,3237624831,GB
-3237624832,3237634047,US
+3237616896,3237634047,US
3237634048,3237634601,GB
3237634602,3237634603,US
3237634604,3237636095,GB
3237636096,3237647103,US
3237647104,3237647359,AU
-3237647360,3237653503,US
+3237647360,3237648383,US
+3237648384,3237650431,AU
+3237650432,3237653503,US
3237653504,3237653759,IN
3237653760,3237655039,US
3237655040,3237655551,IN
@@ -121869,7 +131085,7 @@
3237726976,3237727231,US
3237727232,3237728255,AU
3237728256,3237732863,US
-3237732864,3237733119,NL
+3237732864,3237733119,DE
3237734144,3237734399,CA
3237734400,3237773311,US
3237773312,3237777407,CA
@@ -121897,8 +131113,7 @@
3237870848,3237871103,RO
3237871104,3237871231,TH
3237871232,3237871359,TW
-3237871360,3237871615,RU
-3237871616,3237892063,US
+3237871360,3237892063,US
3237892064,3237892071,GB
3237892072,3237893631,US
3237893632,3237893887,TW
@@ -122128,7 +131343,7 @@
3238624000,3238624255,PL
3238624256,3238625279,HU
3238625280,3238630399,LU
-3238630400,3238631423,GR
+3238630400,3238631423,SE
3238631424,3238632447,US
3238632960,3238633215,UA
3238633216,3238651391,DK
@@ -122198,7 +131413,7 @@
3239088640,3239088895,DK
3239088896,3239089151,IL
3239089152,3239089407,RO
-3239089664,3239089919,GB
+3239089664,3239090175,GB
3239090176,3239090431,SI
3239090432,3239090687,ES
3239090688,3239090943,NL
@@ -122377,7 +131592,7 @@
3239302144,3239303167,PL
3239303168,3239304191,FR
3239304192,3239305215,HR
-3239305216,3239306239,GB
+3239305216,3239306239,US
3239306240,3239307263,UA
3239307264,3239308287,EG
3239308288,3239309311,DE
@@ -122737,8 +131952,8 @@
3239840512,3239840767,DE
3239840768,3239841023,AT
3239841024,3239841279,DE
-3239841536,3239845887,DE
-3239845888,3239847935,GB
+3239841536,3239846911,DE
+3239846912,3239847935,GB
3239847936,3239848447,DE
3239848448,3239848703,CH
3239848960,3239849215,RU
@@ -122836,8 +132051,7 @@
3239927808,3239928831,LT
3239928832,3239929855,DE
3239929856,3239930879,RO
-3239930880,3239931135,DE
-3239931136,3239931903,US
+3239930880,3239931903,US
3239931904,3239938815,DE
3239938816,3239939071,NL
3239939072,3239948543,DE
@@ -122989,8 +132203,7 @@
3240137728,3240138751,NO
3240138752,3240139775,RU
3240139776,3240140799,ES
-3240141056,3240141311,RU
-3240141312,3240141567,RO
+3240140800,3240141567,RO
3240141568,3240142847,RU
3240142848,3240143871,NL
3240143872,3240144895,DE
@@ -123120,7 +132333,7 @@
3240235008,3240236031,FR
3240236032,3240237055,UA
3240237056,3240239103,DE
-3240239104,3240240127,CH
+3240239104,3240240127,FR
3240240128,3240241151,US
3240241152,3240242175,FI
3240242176,3240243199,PL
@@ -123133,7 +132346,8 @@
3240249344,3240250367,UA
3240250368,3240250623,GB
3240250624,3240250879,US
-3240250880,3240251391,GB
+3240250880,3240251135,GB
+3240251136,3240251391,NL
3240251392,3240252415,IE
3240252416,3240253439,LT
3240253440,3240254463,BE
@@ -123200,7 +132414,7 @@
3240287232,3240288255,PL
3240288256,3240289279,RU
3240289792,3240290303,GB
-3240290304,3240290815,UA
+3240290304,3240290815,RU
3240290816,3240291071,FI
3240291072,3240291327,RU
3240291328,3240292351,CZ
@@ -123287,8 +132501,8 @@
3240390656,3240391679,HK
3240391680,3240391935,DK
3240391936,3240392191,CH
-3240392192,3240392447,ES
-3240392448,3240392703,NL
+3240392192,3240392447,GB
+3240392448,3240392703,TW
3240392704,3240393727,DE
3240393728,3240394751,JP
3240394752,3240398847,GB
@@ -123371,11 +132585,10 @@
3240491008,3240492031,RU
3240492032,3240492799,US
3240492800,3240493055,SK
-3240493056,3240493567,SE
-3240493568,3240494079,GB
-3240494080,3240494335,SE
+3240493056,3240494335,GB
3240494336,3240494591,FR
-3240494592,3240501247,SE
+3240494592,3240495103,GB
+3240495104,3240501247,SE
3240501248,3240502271,FR
3240502272,3240503295,GB
3240503296,3240504319,DE
@@ -123403,7 +132616,7 @@
3240554496,3240555519,US
3240555520,3240556543,NL
3240556544,3240556799,JP
-3240556800,3240557567,DE
+3240556800,3240557567,US
3240557568,3240558591,CZ
3240558592,3240559615,FR
3240559616,3240560127,GB
@@ -123434,7 +132647,7 @@
3240588800,3240589055,UA
3240589056,3240589311,RO
3240589312,3240593407,SE
-3240593408,3240593663,GB
+3240593408,3240593919,GB
3240594176,3240594431,DK
3240594432,3240594943,GB
3240595456,3240599551,GB
@@ -123562,8 +132775,7 @@
3240757248,3240759295,IT
3240759296,3240760319,ES
3240760320,3240761343,IT
-3240761344,3240762111,RU
-3240762112,3240762367,GB
+3240761344,3240762367,RU
3240762368,3240763391,ES
3240763392,3240764415,DE
3240764416,3240765439,LT
@@ -123611,9 +132823,7 @@
3240814592,3240816639,IT
3240816640,3240817663,PL
3240817664,3240818687,RU
-3240818688,3240819715,GB
-3240819716,3240819716,NL
-3240819717,3240820735,GB
+3240818688,3240820735,NL
3240820736,3240820799,FR
3240820800,3240820831,CY
3240820832,3240820863,GB
@@ -123654,7 +132864,7 @@
3240855552,3240857599,IT
3240857600,3240857855,PL
3240858624,3240858879,PL
-3240859136,3240859391,NL
+3240859136,3240859391,GB
3240859392,3240859647,SE
3240859648,3240861183,CH
3240861184,3240861439,AT
@@ -123750,7 +132960,9 @@
3241077760,3241078015,LV
3241078016,3241078271,PL
3241078272,3241078527,ES
-3241078528,3241079807,DE
+3241078528,3241078783,DE
+3241078784,3241079039,US
+3241079040,3241079807,DE
3241079808,3241080831,RU
3241080832,3241082879,AT
3241082880,3241083135,FR
@@ -123848,7 +133060,7 @@
3241499904,3241500159,DE
3241500160,3241500671,GB
3241501440,3241501440,GB
-3241501696,3241501951,GB
+3241501696,3241501696,GB
3241501952,3241502463,BE
3241503232,3241503487,RS
3241503488,3241503999,BE
@@ -123938,7 +133150,7 @@
3241779200,3241780223,ES
3241780736,3241780991,FR
3241781248,3241791487,FR
-3241791488,3241792511,TJ
+3241791488,3241792511,RU
3241792512,3241793535,SK
3241793536,3241795583,FR
3241795840,3241796095,FR
@@ -123948,7 +133160,7 @@
3241803832,3241803839,GB
3241803840,3241804031,CY
3241804032,3241805567,BE
-3241805568,3241807871,NL
+3241805568,3241805823,NL
3241807872,3241812991,BE
3241812992,3241814015,IT
3241814016,3241820159,BE
@@ -124034,7 +133246,8 @@
3242597344,3242597375,NL
3242597376,3242598351,FR
3242598352,3242598367,LT
-3242598368,3242602823,FR
+3242598368,3242598383,FI
+3242598384,3242602823,FR
3242602824,3242602831,ES
3242602832,3242602975,FR
3242602976,3242603007,PL
@@ -124050,7 +133263,9 @@
3242604800,3242605055,IT
3242605056,3242605279,FR
3242605280,3242605311,BE
-3242605312,3242606943,FR
+3242605312,3242606723,FR
+3242606724,3242606727,GB
+3242606728,3242606943,FR
3242606944,3242606959,BE
3242606960,3242606975,FR
3242606976,3242607039,ES
@@ -124100,7 +133315,9 @@
3242618432,3242618495,PL
3242618496,3242620183,FR
3242620184,3242620187,PL
-3242620188,3242620199,FR
+3242620188,3242620191,FR
+3242620192,3242620195,DE
+3242620196,3242620199,FR
3242620200,3242620207,ES
3242620208,3242620223,FR
3242620224,3242620239,PT
@@ -124112,7 +133329,9 @@
3242620368,3242620383,PL
3242620384,3242620415,FR
3242620416,3242620419,FI
-3242620420,3242622031,FR
+3242620420,3242620475,FR
+3242620476,3242620479,DE
+3242620480,3242622031,FR
3242622032,3242622047,PL
3242622048,3242622079,FR
3242622080,3242622083,PL
@@ -124132,9 +133351,7 @@
3242950656,3242983423,BE
3242983424,3243048959,IT
3243048960,3243114495,SI
-3243114496,3243237887,NL
-3243237888,3243238399,GB
-3243238400,3243245567,NL
+3243114496,3243245567,NL
3243245568,3243376639,AT
3243376640,3243393023,GB
3243393024,3243401215,JP
@@ -124198,8 +133415,7 @@
3243540480,3243540991,CZ
3243541504,3243542527,MD
3243542528,3243543551,DE
-3243544064,3243544319,GB
-3243544320,3243544575,NL
+3243544064,3243544575,GB
3243544576,3243552767,CZ
3243552768,3243553023,NL
3243553024,3243553279,FR
@@ -124227,7 +133443,7 @@
3243966720,3243966975,PL
3243966976,3243967487,LV
3243967488,3243968511,PL
-3243968512,3243969023,CA
+3243968512,3243969023,GB
3243969024,3243969279,PL
3243969280,3243969535,BG
3243969536,3243970047,PL
@@ -124324,7 +133540,7 @@
3244821248,3244821503,RU
3244821760,3244822015,TR
3244822016,3244822271,RU
-3244822272,3244822527,GB
+3244822272,3244822527,DE
3244822528,3244822783,UA
3244822784,3244823039,CZ
3244823040,3244823295,DE
@@ -124564,8 +133780,7 @@
3244891648,3244891903,UA
3244892160,3244892415,PL
3244892416,3244892671,NL
-3244892672,3244892927,ES
-3244892928,3244893183,PL
+3244892672,3244893183,PL
3244893184,3244893439,BE
3244893440,3244893695,RU
3244893696,3244893951,DE
@@ -124891,6 +134106,12 @@
3245095936,3245096959,IT
3245097216,3245097471,GB
3245099008,3245103103,GB
+3245104770,3245104770,DE
+3245104772,3245104789,DE
+3245104791,3245104793,DE
+3245104795,3245104797,DE
+3245104799,3245104801,DE
+3245104803,3245104809,DE
3245105664,3245106175,NL
3245106176,3245106687,AT
3245106688,3245107711,UA
@@ -125262,15 +134483,14 @@
3245760512,3245776895,DE
3245776896,3245785087,GB
3245785088,3245793279,DE
-3245793280,3245809663,GB
+3245793280,3245801471,GB
+3245801472,3245809663,SC
3245809664,3245834239,AU
3245834240,3245867007,GB
3245867008,3245916159,IE
3245916160,3245917183,GB
3245917184,3245922303,IE
-3245922304,3245923327,GB
-3245923328,3245923455,IE
-3245923456,3245924351,GB
+3245922304,3245924351,GB
3245924352,3245931263,IE
3245931264,3245931519,GB
3245931520,3245932543,IE
@@ -125349,8 +134569,11 @@
3246379008,3246381055,GB
3246381056,3246383103,ES
3246383872,3246384127,ES
+3246385408,3246385663,ES
3246387200,3246388223,GB
-3246388224,3246389247,PT
+3246388224,3246388479,PT
+3246388480,3246388735,ES
+3246388736,3246389247,PT
3246389248,3246390783,ES
3246391296,3246613503,GB
3246613504,3246614527,HU
@@ -125468,8 +134691,8 @@
3247244032,3247244287,DE
3247244288,3247248383,NL
3247248384,3247250431,DE
-3247250432,3247253503,NL
-3247253504,3247255039,DE
+3247250432,3247254527,NL
+3247254528,3247255039,DE
3247255040,3247256831,NL
3247257088,3247258623,DE
3247258880,3247259135,DK
@@ -125572,9 +134795,7 @@
3247379200,3247379455,FI
3247379456,3247380479,NL
3247380480,3247382527,DE
-3247382528,3247390087,FI
-3247390088,3247390088,GB
-3247390089,3247390719,FI
+3247382528,3247390719,FI
3247390720,3247391743,RU
3247392256,3247393791,FI
3247394048,3247394303,PL
@@ -125613,7 +134834,8 @@
3247717376,3247718399,RU
3247718400,3247719423,IR
3247719424,3247720447,RO
-3247720448,3247721471,DE
+3247720448,3247721215,US
+3247721216,3247721471,DE
3247721472,3247722495,EE
3247722496,3247723519,FR
3247723520,3247724543,ES
@@ -125754,7 +134976,8 @@
3248497152,3248498431,NO
3248498432,3248498687,DE
3248498688,3248504831,NO
-3248504832,3248505855,DE
+3248504832,3248505343,US
+3248505344,3248505855,NL
3248505856,3248507903,RU
3248507904,3248508927,MY
3248508928,3248509951,CZ
@@ -125780,8 +135003,7 @@
3248540672,3248541183,RU
3248541184,3248541695,SE
3248541696,3248542719,RU
-3248542720,3248542975,US
-3248542976,3248543231,GB
+3248542720,3248543231,GB
3248543232,3248543743,TR
3248543744,3248544767,RU
3248544768,3248545791,TR
@@ -125790,7 +135012,7 @@
3248547840,3248548863,GB
3248549632,3248549887,SE
3248549888,3248550911,IT
-3248550912,3248551935,DE
+3248550912,3248551935,US
3248551936,3248553215,NO
3248553728,3248553983,RU
3248553984,3248554239,RO
@@ -125798,11 +135020,9 @@
3248557056,3248558079,UA
3248558080,3248560127,NO
3248560896,3248561151,IN
-3248561664,3248562047,NO
-3248562048,3248562082,DK
-3248562083,3248562083,NO
-3248562084,3248562175,DK
-3248562176,3248575487,NO
+3248561664,3248562080,NO
+3248562081,3248562081,DK
+3248562082,3248575487,NO
3248575488,3248576511,CZ
3248576512,3248582655,NO
3248582656,3248583679,SK
@@ -125855,7 +135075,7 @@
3248785536,3248785663,RO
3248785664,3248786943,SI
3248786944,3248787199,PL
-3248787200,3248787455,DE
+3248787200,3248787455,GB
3248787456,3248787711,NL
3248787712,3248787967,CH
3248787968,3248788223,RU
@@ -125919,9 +135139,11 @@
3249055744,3249056767,LI
3249056768,3249057791,GE
3249057792,3249058815,RU
-3249058816,3249060863,RO
+3249058816,3249059839,US
+3249059840,3249060863,RO
3249060864,3249061887,RU
-3249061888,3249063935,DE
+3249061888,3249062911,SG
+3249062912,3249063935,DE
3249063936,3249064959,TR
3249064960,3249065983,FR
3249065984,3249067007,LV
@@ -126001,7 +135223,7 @@
3249117184,3249117695,CH
3249117696,3249118207,DK
3249118208,3249118719,RO
-3249118720,3249119231,FR
+3249118720,3249119231,LU
3249119232,3249119743,RU
3249119744,3249120255,IT
3249120256,3249120767,SE
@@ -126193,9 +135415,7 @@
3249845760,3249846271,DE
3249846272,3249850623,SE
3249850624,3249850879,GB
-3249850880,3249855487,SE
-3249855488,3249856511,NL
-3249856512,3249859583,SE
+3249850880,3249859583,SE
3249859584,3249860095,DE
3249860096,3249861375,SE
3249861376,3249861631,BE
@@ -126214,8 +135434,7 @@
3249868032,3249868287,DK
3249868288,3249868543,SE
3249868544,3249868799,DE
-3249868800,3249869823,NL
-3249869824,3249871103,SE
+3249868800,3249871103,SE
3249871104,3249871359,NO
3249871360,3249871615,US
3249871616,3249871871,NO
@@ -126308,9 +135527,7 @@
3250021376,3250022399,FR
3250022400,3250023423,SE
3250023424,3250024447,DE
-3250024448,3250026495,SE
-3250026496,3250027519,FR
-3250027520,3250030335,SE
+3250024448,3250030335,SE
3250030336,3250030591,DK
3250030592,3250031103,DE
3250031104,3250031359,DK
@@ -126386,7 +135603,7 @@
3250286592,3250287615,MY
3250287616,3250288639,HK
3250288640,3250290687,NL
-3250290688,3250291711,DE
+3250290688,3250291711,US
3250291712,3250292735,TR
3250292736,3250293759,NL
3250293760,3250294783,TR
@@ -126499,9 +135716,9 @@
3250438912,3250439167,FR
3250439168,3250440633,CH
3250440634,3250440634,US
-3250440635,3250442675,CH
-3250442676,3250442676,DE
-3250442677,3250445567,CH
+3250440635,3250442671,CH
+3250442672,3250442679,DE
+3250442680,3250445567,CH
3250445568,3250445599,GB
3250445600,3250445683,CH
3250445684,3250445687,GB
@@ -126958,9 +136175,7 @@
3251337216,3251337727,CH
3251337728,3251338239,DE
3251338240,3251339263,RU
-3251339264,3251346943,IE
-3251346944,3251347071,GB
-3251347072,3251347455,IE
+3251339264,3251347455,IE
3251347456,3251355647,DE
3251355648,3251356159,GB
3251356160,3251356671,AT
@@ -127082,8 +136297,7 @@
3252385280,3252385535,GB
3252385536,3252385791,RO
3252385792,3252386047,GB
-3252386304,3252386559,GB
-3252386560,3252386815,BE
+3252386304,3252386815,BE
3252386816,3252387071,UA
3252387072,3252387327,RU
3252387328,3252387583,PL
@@ -127116,7 +136330,9 @@
3252496128,3252496383,AU
3252496384,3252500223,SE
3252500224,3252500479,GB
-3252500480,3252505343,SE
+3252500480,3252504575,SE
+3252504576,3252505087,MX
+3252505088,3252505343,SE
3252505344,3252505599,US
3252505600,3252507135,SE
3252507136,3252507647,RO
@@ -127319,9 +136535,7 @@
3253223680,3253223935,UA
3253223936,3253230591,RU
3253230592,3253230847,BY
-3253230848,3253270527,RU
-3253270528,3253271551,BY
-3253271552,3253288703,RU
+3253230848,3253288703,RU
3253288704,3253288959,AR
3253288960,3253291519,RU
3253291520,3253291775,NL
@@ -127372,8 +136586,7 @@
3253403648,3253403903,PL
3253403904,3253409791,SE
3253409792,3253410047,GB
-3253410048,3253411327,SE
-3253411328,3253411839,NO
+3253410048,3253411839,SE
3253411840,3253412095,US
3253412096,3253412351,SE
3253412352,3253412607,US
@@ -127478,7 +136691,8 @@
3253645312,3253646335,RU
3253646336,3253647359,PL
3253647360,3253648383,DK
-3253648384,3253649407,IL
+3253648384,3253648895,IL
+3253648896,3253649407,PL
3253649408,3253650431,AE
3253650432,3253651455,DE
3253651456,3253652479,PL
@@ -127577,9 +136791,7 @@
3253730304,3253730815,RO
3253730816,3253731327,UA
3253731328,3253731583,DE
-3253731584,3253736959,GB
-3253736960,3253737215,FR
-3253737216,3253737791,GB
+3253731584,3253737791,GB
3253737792,3253737807,FR
3253737808,3253737823,GB
3253737824,3253737831,PL
@@ -127598,29 +136810,45 @@
3253744416,3253744447,CH
3253744448,3253744511,GB
3253744512,3253744512,US
-3253744513,3253745167,GB
-3253745168,3253745172,DK
+3253744513,3253745151,GB
+3253745152,3253745172,DK
3253745173,3253745173,NO
-3253745174,3253745175,DK
-3253745176,3253745181,GB
+3253745174,3253745181,DK
3253745182,3253745182,NO
-3253745183,3253749791,GB
+3253745183,3253745279,DK
+3253745280,3253749791,GB
3253749792,3253749799,US
-3253749800,3253751175,GB
+3253749800,3253750655,GB
+3253750656,3253750663,CH
+3253750664,3253750671,GB
+3253750672,3253750679,CH
+3253750680,3253751175,GB
3253751176,3253751179,SE
3253751180,3253752271,GB
3253752272,3253752287,ZA
-3253752288,3253754191,GB
+3253752288,3253753711,GB
+3253753712,3253753719,DE
+3253753720,3253754191,GB
3253754192,3253754207,FR
-3253754208,3253755235,GB
+3253754208,3253754255,GB
+3253754256,3253754263,AE
+3253754264,3253755235,GB
3253755236,3253755239,IE
3253755240,3253755551,GB
3253755552,3253755559,IT
-3253755560,3253758583,GB
+3253755560,3253756431,GB
+3253756432,3253756439,PL
+3253756440,3253757247,GB
+3253757248,3253757255,IE
+3253757256,3253757551,GB
+3253757552,3253757567,IT
+3253757568,3253757695,GB
+3253757696,3253757711,BA
+3253757712,3253758583,GB
3253758584,3253758591,PL
-3253758592,3253760511,GB
-3253760512,3253760767,FR
-3253760768,3253761407,GB
+3253758592,3253759327,GB
+3253759328,3253759343,HU
+3253759344,3253761407,GB
3253761408,3253761416,ES
3253761417,3253761417,GB
3253761418,3253761471,ES
@@ -127630,13 +136858,13 @@
3253762816,3253762943,CH
3253762944,3253762991,GB
3253762992,3253762999,DE
-3253763000,3253763071,GB
-3253763072,3253763327,SE
-3253763328,3253764719,GB
+3253763000,3253764719,GB
3253764720,3253764727,DE
3253764728,3253764735,GB
3253764736,3253764743,IT
-3253764744,3253764767,GB
+3253764744,3253764751,GB
+3253764752,3253764759,FR
+3253764760,3253764767,GB
3253764768,3253764783,FR
3253764784,3253764799,GB
3253764800,3253764831,SI
@@ -127691,13 +136919,13 @@
3253776810,3253776810,CH
3253776811,3253777791,GB
3253777792,3253777855,FR
-3253777856,3253778175,GB
-3253778176,3253778259,FR
+3253777856,3253778231,GB
+3253778232,3253778239,FR
+3253778240,3253778259,GB
3253778260,3253778263,NO
-3253778264,3253778271,FR
+3253778264,3253778271,GB
3253778272,3253778287,DE
-3253778288,3253778303,FR
-3253778304,3253778391,GB
+3253778288,3253778391,GB
3253778392,3253778399,IT
3253778400,3253778911,GB
3253778912,3253778943,NL
@@ -127724,19 +136952,23 @@
3253782528,3253782535,FR
3253782536,3253783487,GB
3253783488,3253783519,DE
-3253783520,3253787903,GB
-3253787904,3253787967,FR
-3253787968,3253791419,GB
+3253783520,3253791419,GB
3253791420,3253791423,DE
-3253791424,3253792079,GB
+3253791424,3253791463,GB
+3253791464,3253791471,PL
+3253791472,3253792079,GB
3253792080,3253792095,DE
-3253792096,3253793071,GB
+3253792096,3253793055,GB
+3253793056,3253793063,IE
+3253793064,3253793071,GB
3253793072,3253793087,FR
3253793088,3253793359,GB
3253793360,3253793375,DK
3253793376,3253794271,GB
3253794272,3253794287,FR
-3253794288,3253796351,GB
+3253794288,3253795703,GB
+3253795704,3253795719,NL
+3253795720,3253796351,GB
3253796352,3253796607,FR
3253796608,3253796863,GB
3253796864,3253862399,SE
@@ -127843,7 +137075,9 @@
3254137856,3254138879,IE
3254138880,3254156799,CH
3254156800,3254157055,LI
-3254157056,3254255615,CH
+3254157056,3254240255,CH
+3254240256,3254241279,NL
+3254241280,3254255615,CH
3254255616,3254256127,RE
3254256128,3254256639,GP
3254256640,3254257151,YT
@@ -127857,9 +137091,10 @@
3254262528,3254263039,YT
3254263040,3254271999,FR
3254272000,3254276095,GF
-3254276096,3254277119,FR
+3254276096,3254277119,GP
3254277120,3254278143,YT
-3254278144,3254486527,FR
+3254278144,3254280191,GP
+3254280192,3254486527,FR
3254486528,3254486543,CH
3254486544,3254487295,FR
3254487296,3254487419,CF
@@ -127918,7 +137153,7 @@
3254656512,3254656767,DE
3254656768,3254657023,GB
3254657024,3254661119,ES
-3254661120,3254665215,GB
+3254661120,3254665215,RO
3254681600,3254697983,DE
3254697984,3254698495,SE
3254698496,3254699007,GB
@@ -128103,7 +137338,7 @@
3254882304,3254882559,PL
3254882560,3254882815,IL
3254882816,3254883071,PL
-3254883072,3254883327,BG
+3254883072,3254883327,US
3254883328,3254883583,GB
3254883584,3254883839,AL
3254883840,3254884351,GB
@@ -128178,8 +137413,8 @@
3255022592,3255022847,RE
3255022848,3255024383,FR
3255024384,3255024639,YT
-3255024640,3255031807,FR
-3255031808,3255033087,GF
+3255024640,3255032831,FR
+3255032832,3255033087,GF
3255033088,3255052287,FR
3255052288,3255053311,IT
3255053312,3255054335,SE
@@ -128222,7 +137457,8 @@
3255129856,3255130111,HR
3255130112,3255130623,FR
3255131136,3255132159,RU
-3255132160,3255132671,NL
+3255132160,3255132415,NL
+3255132416,3255132671,SE
3255132672,3255132927,US
3255132928,3255133183,NL
3255133184,3255134207,DE
@@ -128231,7 +137467,8 @@
3255140352,3255141375,CH
3255141376,3255146495,FR
3255146496,3255147519,US
-3255147520,3255148543,DE
+3255147520,3255147775,NL
+3255147776,3255148543,DE
3255148544,3255149567,SY
3255150080,3255152639,FR
3255152640,3255153663,IR
@@ -128402,12 +137639,15 @@
3255416320,3255417855,DE
3255417856,3255418879,GB
3255418880,3255422975,DE
-3255422976,3255425023,LV
+3255422976,3255423999,RU
+3255424000,3255425023,LV
3255425024,3255426047,DE
3255426048,3255426559,IT
3255426816,3255427071,PL
3255427072,3255431167,RU
-3255431168,3255435263,GB
+3255431168,3255432191,GB
+3255432192,3255432447,FR
+3255432448,3255435263,GB
3255451648,3255452671,FR
3255483392,3255484415,DE
3255488512,3255489535,AT
@@ -128489,9 +137729,7 @@
3255743232,3255743487,IT
3255743488,3255743743,DE
3255743744,3255743999,US
-3255744000,3255745535,SE
-3255745536,3255746047,DK
-3255746048,3255750655,SE
+3255744000,3255750655,SE
3255750656,3255750911,AT
3255750912,3255751167,SE
3255751168,3255751423,DK
@@ -128560,7 +137798,7 @@
3256410624,3256411135,GR
3256411136,3256411647,FR
3256411648,3256411903,DE
-3256411904,3256412159,CH
+3256411904,3256412159,HR
3256412672,3256413183,RO
3256413184,3256413695,UA
3256413696,3256414207,PL
@@ -128621,7 +137859,7 @@
3256636416,3256638463,UA
3256638464,3256639487,RU
3256639488,3256639743,DE
-3256639744,3256639999,GB
+3256639744,3256639999,NL
3256640000,3256640511,BE
3256640512,3256641535,UA
3256641536,3256642559,PL
@@ -128739,14 +137977,16 @@
3256844288,3256845311,CH
3256845312,3256846335,RU
3256846336,3256847359,FR
-3256847360,3256849407,GB
+3256847360,3256847871,GB
+3256847872,3256848127,DE
+3256848128,3256848383,US
+3256848384,3256849407,GB
3256849408,3256850431,DE
3256850432,3256852479,RU
3256852480,3256853503,FR
3256853504,3256854527,DK
3256854528,3256855551,UA
-3256855552,3256856063,RU
-3256856064,3256856575,GB
+3256855552,3256856575,RU
3256856576,3256857599,TR
3256857600,3256858623,LT
3256858624,3256859647,GB
@@ -128770,7 +138010,9 @@
3256876544,3256876799,CH
3256877056,3256896511,GB
3256896512,3256896767,FR
-3256896768,3256897535,DE
+3256896768,3256897023,DE
+3256897024,3256897279,FR
+3256897280,3256897535,DE
3256898048,3256898303,GB
3256898560,3256899071,TR
3256899072,3256899583,RU
@@ -128797,7 +138039,9 @@
3256920064,3256921087,FR
3256921088,3256922111,IT
3256922112,3256934399,GB
-3256934400,3256935423,VN
+3256934400,3256934655,FR
+3256934656,3256934911,IT
+3256934912,3256935423,VN
3256935424,3256935935,RU
3256935936,3256936191,EE
3256936192,3256936447,RU
@@ -128883,7 +138127,8 @@
3257035264,3257035775,GB
3257035776,3257036799,NL
3257036800,3257040895,GB
-3257040896,3257041919,RO
+3257040896,3257041663,DE
+3257041664,3257041919,RO
3257041920,3257042943,FI
3257042944,3257047039,GB
3257047040,3257048063,IE
@@ -128898,17 +138143,22 @@
3257065728,3257065983,DE
3257065984,3257066495,AT
3257066496,3257067519,GB
-3257067520,3257068543,DE
+3257067520,3257068543,US
3257068544,3257069567,RU
3257069568,3257070591,DE
3257070592,3257070847,RU
-3257070848,3257071615,NL
+3257070848,3257071103,NL
+3257071104,3257071359,RU
+3257071360,3257071615,NL
3257071616,3257072639,RU
3257072640,3257073663,NO
3257073664,3257076735,GB
3257076736,3257077503,DE
3257077504,3257077759,US
-3257077760,3257083903,GB
+3257077760,3257082367,GB
+3257082368,3257082623,NL
+3257082624,3257082879,DE
+3257082880,3257083903,GB
3257083904,3257084927,ES
3257084928,3257086975,RU
3257086976,3257087999,MD
@@ -129138,8 +138388,8 @@
3257564160,3257564671,GB
3257564672,3257565183,RO
3257565184,3257566719,CY
-3257566720,3257566847,RU
-3257566848,3257573375,CY
+3257566720,3257567231,RU
+3257567232,3257573375,CY
3257573376,3257574143,CH
3257577472,3257581567,DE
3257581568,3257585663,UA
@@ -129167,12 +138417,11 @@
3257738752,3257740543,NL
3257740800,3257741055,FR
3257741056,3257741311,NL
-3257741312,3257741567,DE
-3257741568,3257741823,NL
-3257741824,3257743615,DE
+3257741312,3257743615,DE
3257743616,3257747199,NL
3257747200,3257747455,DE
3257747456,3257748479,NL
+3257748480,3257749503,DE
3257749504,3257753087,NL
3257753088,3257756159,DE
3257756416,3257761279,NL
@@ -129413,9 +138662,7 @@
3258255360,3258265599,NL
3258265600,3258266623,FR
3258266624,3258267647,RU
-3258267648,3258268671,NL
-3258268672,3258268927,IT
-3258269184,3258269695,NL
+3258267648,3258269695,NL
3258269696,3258271743,DE
3258271744,3258272767,NL
3258272768,3258273791,FR
@@ -129438,7 +138685,7 @@
3258298112,3258298367,GB
3258298368,3258300415,IT
3258300416,3258301439,GB
-3258301440,3258302463,RU
+3258301440,3258302463,JP
3258302464,3258303487,PL
3258303488,3258304511,UA
3258304512,3258305535,LT
@@ -129528,7 +138775,7 @@
3258511360,3258515455,CH
3258515456,3258580991,FR
3258580992,3258587135,SY
-3258587136,3258588159,US
+3258587136,3258588159,GB
3258588160,3258588927,ES
3258588928,3258589951,RU
3258589952,3258590207,ES
@@ -129579,8 +138826,8 @@
3258693632,3258693887,RU
3258693888,3258694143,SI
3258694144,3258694399,RU
-3258694656,3258694911,GB
-3258694912,3258696703,DE
+3258694656,3258695167,GB
+3258695168,3258696703,DE
3258696704,3258697727,ES
3258697728,3258698751,US
3258698752,3258699775,DE
@@ -129645,7 +138892,8 @@
3258783744,3258783882,NL
3258783883,3258783883,DE
3258783884,3258784767,NL
-3258784768,3258785791,DE
+3258784768,3258785535,US
+3258785536,3258785791,DE
3258785792,3258786815,MD
3258786816,3258787839,AT
3258787840,3258788863,NL
@@ -129681,8 +138929,7 @@
3258834944,3258835967,TR
3258835968,3258836991,PL
3258836992,3258838015,RU
-3258838016,3258838271,NL
-3258838528,3258839039,NL
+3258838016,3258839039,NL
3258839040,3258843135,GB
3258843136,3258843391,RU
3258844928,3258847231,GB
@@ -129711,7 +138958,7 @@
3258882048,3258883071,SE
3258883072,3258883327,GB
3258884096,3258885119,FR
-3258885120,3258886143,IE
+3258885120,3258886143,RU
3258886144,3258887167,DK
3258887168,3258889215,GB
3258889216,3258890239,NL
@@ -129760,7 +139007,9 @@
3259248128,3259248383,GB
3259248384,3259248895,SE
3259248896,3259249151,GB
-3259249152,3259258623,SE
+3259249152,3259250175,SE
+3259250176,3259250431,GB
+3259250432,3259258623,SE
3259258624,3259258879,ES
3259258880,3259260927,SE
3259260928,3259261183,DK
@@ -129848,8 +139097,8 @@
3259320056,3259320063,AT
3259320064,3259320575,GB
3259320576,3259320583,FR
-3259320584,3259326463,GB
-3259326464,3259327487,IE
+3259320584,3259326975,GB
+3259326976,3259327487,IE
3259327488,3259328190,GB
3259328191,3259328191,US
3259328192,3259328511,GB
@@ -129974,7 +139223,9 @@
3260021248,3260021759,RU
3260021760,3260022271,GR
3260022272,3260022783,NL
-3260022784,3260284927,GB
+3260022784,3260259327,GB
+3260259328,3260259583,JP
+3260259584,3260284927,GB
3260284928,3260415999,RU
3260416000,3260481535,FI
3260481536,3260503039,RU
@@ -129983,9 +139234,7 @@
3260506368,3260506623,CH
3260506624,3260509439,RU
3260509440,3260509695,CH
-3260509696,3260520191,RU
-3260520192,3260520447,IN
-3260520448,3260547071,RU
+3260509696,3260547071,RU
3260547072,3260547327,DE
3260547328,3260547583,UA
3260547584,3260547839,NL
@@ -130107,8 +139356,8 @@
3261270016,3261271039,FR
3261271040,3261272063,DE
3261272064,3261273087,TR
-3261273088,3261274111,DE
-3261274112,3261274367,FR
+3261273088,3261273855,DE
+3261273856,3261274367,FR
3261274368,3261275135,JP
3261275136,3261276159,US
3261276160,3261278207,DE
@@ -130243,8 +139492,7 @@
3261805568,3261806591,DE
3261806592,3261810687,AT
3261810688,3261811711,CZ
-3261811712,3261812479,CA
-3261812480,3261812735,NL
+3261811712,3261812735,NL
3261812736,3261812991,RU
3261812992,3261820927,AT
3261820928,3261821183,RO
@@ -130327,7 +139575,7 @@
3262028800,3262030847,DE
3262030848,3262031871,FR
3262031872,3262032895,TR
-3262032896,3262033919,DE
+3262032896,3262033919,US
3262033920,3262034431,FI
3262034432,3262035199,AX
3262035200,3262036991,FI
@@ -130375,14 +139623,10 @@
3262122752,3262122815,AX
3262122816,3262124031,FI
3262124032,3262128127,DE
-3262128128,3262137599,GB
-3262137600,3262137855,DE
-3262138112,3262141183,GB
-3262141184,3262141439,DE
+3262128128,3262137855,GB
+3262138112,3262141439,GB
3262141440,3262142463,ES
-3262142464,3262143999,GB
-3262144000,3262144031,DE
-3262144032,3262145615,GB
+3262142464,3262145615,GB
3262145616,3262145631,DE
3262145632,3262146559,GB
3262146560,3262146815,DE
@@ -130390,13 +139634,7 @@
3262148912,3262148919,DE
3262148920,3262149167,GB
3262149168,3262149215,FR
-3262149216,3262151071,GB
-3262151072,3262151103,DE
-3262151104,3262151935,GB
-3262151936,3262152191,DE
-3262152192,3262152663,GB
-3262152664,3262152671,DE
-3262152672,3262152703,GB
+3262149216,3262152703,GB
3262152704,3262185471,AT
3262185472,3262191615,DE
3262191616,3262192639,RU
@@ -130448,7 +139686,8 @@
3262417408,3262417919,PL
3262417920,3262418431,RU
3262418432,3262419455,FR
-3262419456,3262419967,NL
+3262419456,3262419711,NL
+3262419712,3262419967,ES
3262419968,3262420479,FR
3262420480,3262420991,CH
3262420992,3262421503,ES
@@ -130831,7 +140070,7 @@
3262474068,3262474068,SG
3262474069,3262474069,MY
3262474070,3262474070,SG
-3262474071,3262474071,TW
+3262474071,3262474071,DE
3262474072,3262474072,IN
3262474073,3262474075,SG
3262474076,3262474076,MY
@@ -132409,14 +141648,12 @@
3262676480,3262676735,DE
3262676736,3262678271,NL
3262678272,3262678527,DE
-3262678528,3262682623,NL
-3262682624,3262682879,DE
+3262678528,3262681087,NL
+3262681088,3262682879,DE
3262682880,3262686207,NL
3262686208,3262689023,DE
3262689024,3262690815,NL
-3262690816,3262691583,DE
-3262691584,3262692607,NL
-3262692608,3262701567,DE
+3262690816,3262701567,DE
3262701568,3262703103,NL
3262703360,3262703615,SE
3262703616,3262704383,DE
@@ -132450,7 +141687,8 @@
3262914816,3262915071,CH
3262915072,3262915327,JP
3262915328,3262915583,SG
-3262915584,3262917631,RU
+3262915584,3262916095,GB
+3262916096,3262917631,RU
3262917632,3262918655,DE
3262918656,3262919679,RU
3262919680,3262920703,NL
@@ -132459,8 +141697,7 @@
3262922752,3262923775,US
3262923776,3262924799,ES
3262924800,3262925823,IT
-3262926336,3262954495,CH
-3262954496,3262955519,LI
+3262926336,3262955519,CH
3262955520,3262956543,FR
3262956544,3262957567,NL
3262957568,3262958591,CH
@@ -132668,8 +141905,8 @@
3263634432,3263634943,ES
3263634944,3263635199,RU
3263635200,3263635455,ES
-3263635456,3263636223,UA
-3263636224,3263636479,RU
+3263635456,3263635967,UA
+3263635968,3263636479,RU
3263636480,3263636735,UA
3263636736,3263637247,RU
3263637248,3263637503,UA
@@ -132864,7 +142101,8 @@
3264386048,3264387071,IR
3264387072,3264388095,LB
3264388096,3264389119,TR
-3264389120,3264390143,RU
+3264389120,3264389887,GB
+3264389888,3264390143,IE
3264390144,3264391167,IT
3264391168,3264392191,SE
3264392192,3264393215,FR
@@ -132995,7 +142233,7 @@
3264630784,3264631807,DE
3264631808,3264632831,RO
3264632832,3264633855,RU
-3264633856,3264634879,AT
+3264633856,3264634879,CH
3264634880,3264636927,PL
3264636928,3264637951,RU
3264637952,3264639999,DK
@@ -133164,7 +142402,8 @@
3265009920,3265010175,DE
3265010688,3265018879,DE
3265018880,3265019903,HK
-3265019904,3265020927,NL
+3265019904,3265020671,NL
+3265020672,3265020927,MD
3265020928,3265021951,SK
3265021952,3265022975,ES
3265022976,3265023999,IQ
@@ -133174,7 +142413,9 @@
3265027072,3265031167,RU
3265031168,3265032191,IT
3265032192,3265033215,PL
-3265033216,3265036287,RU
+3265033216,3265035263,RU
+3265035264,3265035775,GB
+3265035776,3265036287,RU
3265036288,3265039359,DE
3265039360,3265040383,IR
3265040384,3265042943,DE
@@ -133191,8 +142432,8 @@
3265053696,3265054207,DE
3265055232,3265055743,FR
3265056256,3265056511,DE
-3265056768,3265061887,DE
-3265061888,3265062143,US
+3265056768,3265060863,DE
+3265060864,3265062143,US
3265062144,3265062911,JP
3265062912,3265063935,DE
3265063936,3265064959,TR
@@ -133350,7 +142591,8 @@
3265896448,3265897471,RU
3265897472,3265898495,AL
3265898496,3265899519,MD
-3265899520,3265900543,DE
+3265899520,3265899775,NL
+3265899776,3265900543,DE
3265900544,3265902591,FR
3265902592,3265903615,ES
3265904384,3265904639,RO
@@ -133612,13 +142854,13 @@
3267559424,3267624959,DE
3267627372,3267627375,DE
3267627408,3267627411,GB
-3267628288,3267628543,FR
+3267628396,3267628399,FR
3267629588,3267629591,BE
3267630080,3267631103,GB
3267634176,3267635199,GB
-3267647488,3267649535,GB
3267657552,3267657555,RO
3267657560,3267657563,RO
+3267660800,3267661823,GB
3267665920,3267666943,GB
3267670016,3267671039,ZA
3267672996,3267672999,FR
@@ -133649,13 +142891,7 @@
3268198400,3268214783,MA
3268214784,3268224767,GB
3268224768,3268225023,US
-3268225024,3268251311,GB
-3268251312,3268251327,IE
-3268251328,3268251615,GB
-3268251616,3268251631,CH
-3268251632,3268257431,GB
-3268257432,3268257439,IT
-3268257440,3268280319,GB
+3268225024,3268280319,GB
3268280320,3268334079,FR
3268334080,3268334591,RE
3268334592,3268345855,FR
@@ -133709,9 +142945,7 @@
3268771328,3268771839,NL
3268771840,3268788223,NO
3268788224,3268804607,CZ
-3268804608,3268869375,FR
-3268869376,3268869631,PF
-3268869632,3268870143,FR
+3268804608,3268870143,FR
3268870144,3268935679,FI
3268935680,3269066751,GB
3269066752,3269075719,SE
@@ -133725,49 +142959,23 @@
3269272704,3269272831,DE
3269272832,3269274623,GB
3269274624,3269274879,DE
-3269274880,3269277695,GB
-3269277696,3269278719,NL
-3269278720,3269280255,GB
-3269280256,3269280767,NL
-3269280768,3269281023,GB
-3269281024,3269281279,NL
+3269274880,3269280127,GB
+3269280128,3269280767,NL
+3269280768,3269281279,GB
3269281280,3269281343,FR
-3269281344,3269282559,GB
-3269282560,3269282815,FR
-3269282816,3269284991,GB
-3269284992,3269285055,FR
-3269285056,3269285183,GB
-3269285184,3269285215,DE
-3269285216,3269285247,FR
-3269285248,3269285335,GB
+3269281344,3269285335,GB
3269285336,3269285343,FR
-3269285344,3269285631,GB
-3269285632,3269285887,DE
-3269285888,3269286463,GB
+3269285344,3269286463,GB
3269286464,3269286479,DE
3269286480,3269288703,GB
3269288704,3269288959,DE
-3269288960,3269290559,GB
-3269290560,3269290567,DE
-3269290568,3269305343,GB
-3269305344,3269305351,DE
-3269305352,3269305855,GB
-3269305856,3269306879,DE
-3269306880,3269319055,GB
-3269319056,3269319071,DE
-3269319072,3269319167,GB
-3269319168,3269319679,DE
-3269319680,3269320191,GB
-3269320192,3269320447,DE
-3269320448,3269322751,GB
-3269322752,3269323007,DE
-3269323008,3269326963,GB
-3269326964,3269326967,DE
-3269326968,3269327055,GB
-3269327056,3269327071,DE
-3269327072,3269327871,GB
-3269327872,3269328383,DE
-3269328384,3269394431,GB
+3269288960,3269291775,GB
+3269291776,3269292287,ES
+3269292288,3269306367,GB
+3269306368,3269306879,DE
+3269306880,3269318143,GB
+3269318144,3269318399,DE
+3269318400,3269394431,GB
3269394432,3269419007,AU
3269419008,3269435391,GB
3269435392,3269443583,AU
@@ -133782,9 +142990,7 @@
3269656576,3269722111,GB
3269722112,3269787647,CZ
3269787648,3269853183,NL
-3269853184,3269872927,CH
-3269872928,3269873151,SG
-3269873152,3269918719,CH
+3269853184,3269918719,CH
3269918720,3269984255,DE
3269984256,3270049791,AT
3270049792,3270115327,DE
@@ -134187,10 +143393,9 @@
3271933184,3271933439,GB
3271933440,3271933695,SE
3271933696,3271933951,DE
-3271933952,3272001535,FR
-3272001536,3272002559,GP
-3272002560,3272015871,FR
-3272015872,3272016895,US
+3271933952,3272015871,FR
+3272015872,3272016127,GB
+3272016128,3272016895,US
3272016896,3272017919,DE
3272017920,3272018943,IQ
3272018944,3272019455,CZ
@@ -134206,9 +143411,7 @@
3272065024,3272073727,GB
3272073728,3272073855,IE
3272073856,3272081407,GB
-3272081408,3272087551,PT
-3272087552,3272088575,MR
-3272088576,3272089599,PT
+3272081408,3272089599,PT
3272089600,3272090111,NO
3272090112,3272091647,RU
3272091648,3272092671,UA
@@ -134263,27 +143466,17 @@
3272138752,3272146943,DE
3272146944,3272212479,RU
3272212480,3272212991,GB
-3272212992,3272213431,ES
-3272213432,3272213439,GB
-3272213440,3272213471,ES
-3272213472,3272213487,CY
-3272213488,3272213503,ES
-3272213504,3272213671,GB
-3272213672,3272213679,IT
-3272213680,3272213759,GB
+3272212992,3272213503,ES
+3272213504,3272213759,GB
3272213760,3272214015,NL
-3272214016,3272214527,GB
-3272214528,3272215039,FR
+3272214016,3272215039,GB
3272215040,3272215295,ES
3272215296,3272215551,NL
-3272215552,3272215807,CH
-3272215808,3272215999,GB
+3272215552,3272215999,GB
3272216000,3272216007,IT
3272216008,3272216047,GB
3272216048,3272216055,IT
-3272216056,3272216215,GB
-3272216216,3272216223,FR
-3272216224,3272216263,GB
+3272216056,3272216263,GB
3272216264,3272216271,IT
3272216272,3272216283,GB
3272216284,3272216287,IT
@@ -134294,8 +143487,8 @@
3272217328,3272217911,GB
3272217912,3272217919,ES
3272217920,3272217983,GB
-3272217984,3272218079,ES
-3272218080,3272219647,GB
+3272217984,3272218047,ES
+3272218048,3272219647,GB
3272219648,3272219903,FR
3272219904,3272221447,GB
3272221448,3272221451,SE
@@ -134303,22 +143496,17 @@
3272221696,3272221951,NL
3272221952,3272222207,GB
3272222208,3272222463,ES
-3272222464,3272222719,NL
-3272222720,3272225279,GB
+3272222464,3272225279,GB
3272225280,3272225815,IT
3272225816,3272225919,GB
3272225920,3272226047,IT
-3272226048,3272226303,GB
-3272226304,3272226559,FR
-3272226560,3272227327,GB
+3272226048,3272227327,GB
3272227328,3272227359,US
3272227360,3272228351,GB
3272228352,3272228607,FR
3272228608,3272228639,NL
3272228640,3272228671,IT
-3272228672,3272228703,NL
-3272228704,3272228735,FR
-3272228736,3272228863,NL
+3272228672,3272228863,NL
3272228864,3272237055,LU
3272237056,3272245247,IM
3272245248,3272261631,FI
@@ -134367,7 +143555,30 @@
3272402048,3272402063,SE
3272402560,3272402623,GB
3272402944,3272403007,HU
-3272403072,3272403199,NL
+3272403072,3272403075,NL
+3272403076,3272403079,SE
+3272403080,3272403083,NL
+3272403084,3272403087,SE
+3272403088,3272403091,NL
+3272403092,3272403095,SE
+3272403096,3272403099,NL
+3272403100,3272403103,SE
+3272403104,3272403107,NL
+3272403108,3272403111,SE
+3272403112,3272403115,NL
+3272403116,3272403119,SE
+3272403120,3272403124,NL
+3272403125,3272403125,SE
+3272403126,3272403126,NL
+3272403127,3272403127,SE
+3272403128,3272403131,NL
+3272403132,3272403135,SE
+3272403136,3272403139,NL
+3272403140,3272403142,SE
+3272403143,3272403166,NL
+3272403167,3272403167,SE
+3272403168,3272403199,NL
+3272403420,3272403439,SE
3272403968,3272404991,FR
3272404992,3272406015,DE
3272406016,3272407039,NL
@@ -134435,7 +143646,9 @@
3272626176,3272627199,DE
3272627200,3272628223,NL
3272628224,3272629247,UA
-3272629248,3272638463,RU
+3272629248,3272629759,RU
+3272629760,3272630015,DE
+3272630016,3272638463,RU
3272638464,3272646655,ES
3272646656,3272647167,GB
3272647168,3272647385,IL
@@ -134552,9 +143765,7 @@
3273026560,3273028607,UA
3273028608,3273029631,PL
3273029632,3273029887,CH
-3273029888,3273029897,DE
-3273029898,3273029898,GB
-3273029899,3273030143,DE
+3273029888,3273030143,GB
3273030400,3273030655,RU
3273030656,3273031679,PL
3273031680,3273032191,GB
@@ -134624,17 +143835,13 @@
3273293824,3273302015,MK
3273302016,3273310207,RU
3273310208,3273318399,AT
-3273318400,3273326983,GB
-3273326984,3273326987,DE
-3273326988,3273327287,GB
+3273318400,3273327287,GB
3273327288,3273327295,DE
3273327296,3273327335,GB
3273327336,3273327359,DE
3273327360,3273327439,GB
3273327440,3273327447,IE
-3273327448,3273327535,GB
-3273327536,3273327551,IE
-3273327552,3273330175,GB
+3273327448,3273330175,GB
3273330176,3273330183,IR
3273330184,3273330303,GB
3273330304,3273330431,IE
@@ -134642,35 +143849,24 @@
3273334528,3273334655,DE
3273334656,3273334719,GB
3273334720,3273334783,DE
-3273334784,3273338623,GB
-3273338624,3273338879,DE
-3273338880,3273340927,GB
+3273334784,3273340927,GB
3273340928,3273341439,FR
-3273341440,3273341751,GB
-3273341752,3273341759,FR
-3273341760,3273341835,GB
+3273341440,3273341835,GB
3273341836,3273341836,DE
3273341837,3273341855,GB
3273341856,3273341887,FR
3273341888,3273342463,GB
3273342464,3273342719,DE
-3273342720,3273343999,GB
-3273344000,3273344511,DE
-3273344512,3273347839,GB
+3273342720,3273347839,GB
3273347840,3273348095,DE
-3273348096,3273361855,GB
-3273361856,3273361919,DE
+3273348096,3273361887,GB
+3273361888,3273361919,DE
3273361920,3273362239,GB
3273362240,3273362255,DE
-3273362256,3273363327,GB
-3273363328,3273363359,DE
-3273363360,3273365887,GB
+3273362256,3273365887,GB
3273365888,3273366015,FR
-3273366016,3273368063,GB
-3273368064,3273368575,DE
-3273368576,3273369343,GB
-3273369344,3273369599,DE
-3273369600,3273369887,GB
+3273366016,3273366527,DE
+3273366528,3273369887,GB
3273369888,3273369895,FR
3273369896,3273369911,GB
3273369912,3273369919,FR
@@ -134680,32 +143876,30 @@
3273370032,3273370039,FR
3273370040,3273370047,GB
3273370048,3273370063,FR
-3273370064,3273370623,GB
+3273370064,3273370087,GB
+3273370088,3273370095,FR
+3273370096,3273370623,GB
3273370624,3273370879,DE
3273370880,3273371807,GB
3273371808,3273371823,DE
-3273371824,3273372927,GB
-3273372928,3273373567,DE
-3273373568,3273377791,GB
-3273377792,3273378047,DE
-3273378048,3273382671,GB
+3273371824,3273372671,GB
+3273372672,3273373183,DE
+3273373184,3273373439,GB
+3273373440,3273373695,DE
+3273373696,3273382399,GB
+3273382400,3273382463,DE
+3273382464,3273382671,GB
3273382672,3273382687,DE
-3273382688,3273384191,GB
-3273384192,3273384703,DE
-3273384704,3273385471,GB
-3273385472,3273385727,DE
-3273385728,3273387263,GB
-3273387264,3273387519,DE
-3273387520,3273390111,GB
+3273382688,3273384447,GB
+3273384448,3273384703,DE
+3273384704,3273384959,GB
+3273384960,3273385215,DE
+3273385216,3273390111,GB
3273390112,3273390143,US
3273390144,3273390207,DE
-3273390208,3273390367,GB
-3273390368,3273390399,DE
-3273390400,3273391103,GB
+3273390208,3273391103,GB
3273391104,3273391231,DE
-3273391232,3273391327,GB
-3273391328,3273391343,DE
-3273391344,3273392127,GB
+3273391232,3273392127,GB
3273392128,3273392639,PL
3273392640,3273393663,RO
3273394176,3273394687,RO
@@ -135081,11 +144275,9 @@
3274831872,3274833919,RO
3274833920,3274842111,BY
3274842112,3274850303,DK
-3274850304,3274855423,GB
-3274855424,3274855935,AT
-3274855936,3274866175,GB
-3274866176,3274866431,RU
-3274866432,3274866687,GB
+3274850304,3274855487,GB
+3274855488,3274855519,AT
+3274855520,3274866687,GB
3274866688,3274883071,DE
3274883072,3274899455,EE
3274899456,3274902399,DE
@@ -135290,26 +144482,18 @@
3275399168,3275407359,AT
3275407360,3275415551,GB
3275415552,3275423743,UA
-3275423744,3275432895,GB
-3275432928,3275457535,GB
+3275423744,3275457535,GB
3275457536,3275457791,FK
3275457792,3275458303,GB
3275458304,3275458559,FK
3275458560,3275459071,IE
3275459072,3275459599,GB
3275459600,3275459615,IE
-3275459616,3275459839,GB
-3275459840,3275460095,IE
-3275460096,3275460239,GB
-3275460256,3275460351,GB
+3275459616,3275460351,GB
3275460352,3275460607,IE
3275460608,3275464031,GB
3275464032,3275464063,IE
-3275464064,3275468655,GB
-3275468656,3275468671,IE
-3275468672,3275481087,GB
-3275481344,3275481599,GB
-3275482112,3275489023,GB
+3275464064,3275489023,GB
3275489024,3275489279,CZ
3275489280,3275497471,GB
3275497472,3275505663,DE
@@ -135513,7 +144697,7 @@
3275908864,3275909119,PL
3275909376,3275909631,UA
3275909632,3275909887,EE
-3275909888,3275910143,SI
+3275909888,3275910143,BE
3275910144,3275910399,RU
3275910400,3275910655,DK
3275910656,3275910911,UA
@@ -135555,11 +144739,9 @@
3276013568,3276014239,GB
3276014240,3276014247,FR
3276014248,3276014335,GB
-3276014336,3276014847,FR
-3276014848,3276015055,GB
-3276015056,3276015063,FR
-3276015064,3276015615,GB
-3276015616,3276021119,FR
+3276014336,3276016127,FR
+3276016128,3276016383,ES
+3276016384,3276021119,FR
3276021120,3276021247,GB
3276021248,3276027903,FR
3276027904,3276028031,GB
@@ -135573,10 +144755,10 @@
3276028672,3276028927,GB
3276028928,3276029439,FR
3276029440,3276029951,GB
-3276029952,3276031999,FR
-3276032000,3276032511,GB
+3276029952,3276032511,FR
3276032512,3276032767,ES
-3276032768,3276036543,GB
+3276032768,3276034047,FR
+3276034048,3276036543,GB
3276036544,3276036607,FR
3276036608,3276037311,GB
3276037312,3276037319,FR
@@ -135630,8 +144812,7 @@
3276103680,3276104703,SI
3276104704,3276104959,GB
3276104960,3276105215,NL
-3276105216,3276105471,US
-3276105472,3276105727,GB
+3276105216,3276105727,GB
3276105728,3276106751,AT
3276106752,3276107775,BG
3276107776,3276108799,DE
@@ -135744,7 +144925,6 @@
3276474936,3276474939,IT
3276474956,3276474959,IT
3276478108,3276478111,CH
-3276478464,3276480511,FR
3276485632,3276486655,GB
3276490776,3276490776,NL
3276490782,3276490782,AT
@@ -135788,7 +144968,9 @@
3276532583,3276532583,GB
3276532590,3276532590,GR
3276532608,3276532608,GB
-3276537856,3276617727,ES
+3276537856,3276581375,ES
+3276581376,3276581631,SE
+3276581632,3276617727,ES
3276617728,3276617983,IT
3276617984,3276668927,ES
3276668928,3276677119,MC
@@ -136214,10 +145396,8 @@
3276871680,3276873759,GB
3276873760,3276873791,ES
3276873792,3276873983,GB
-3276873984,3276874239,ES
-3276874240,3276874351,GB
-3276874352,3276874367,ES
-3276874368,3276874959,GB
+3276873984,3276874751,ES
+3276874752,3276874959,GB
3276874960,3276874975,NL
3276874976,3276876279,GB
3276876280,3276876283,DK
@@ -136239,13 +145419,15 @@
3276886528,3276886783,DE
3276886784,3276886911,GB
3276886912,3276887039,DE
-3276887040,3276889087,GB
-3276889088,3276890111,IT
+3276887040,3276888063,GB
+3276888064,3276890111,IT
3276890112,3276890175,GB
3276890176,3276890191,US
3276890192,3276892159,GB
3276892160,3276893951,IT
-3276893952,3276898783,GB
+3276893952,3276894207,GB
+3276894208,3276896255,IT
+3276896256,3276898783,GB
3276898784,3276898799,CH
3276898800,3276900207,GB
3276900208,3276900211,CH
@@ -136271,13 +145453,11 @@
3276910592,3276912639,IT
3276912640,3276912671,GB
3276912672,3276912687,IT
-3276912688,3276912879,GB
-3276912880,3276912895,IT
-3276912896,3276916735,GB
-3276916736,3276917231,ES
+3276912688,3276917231,GB
3276917232,3276917247,FR
-3276917248,3276918783,ES
-3276918784,3276919061,GB
+3276917248,3276917735,GB
+3276917736,3276917739,ES
+3276917740,3276919061,GB
3276919062,3276919062,DE
3276919063,3276919375,GB
3276919376,3276919391,DE
@@ -136486,34 +145666,44 @@
3277395456,3277402591,GB
3277402592,3277402607,ES
3277402608,3277403135,GB
-3277403136,3277403295,FR
-3277403296,3277403327,GB
-3277403328,3277403455,FR
+3277403136,3277403263,FR
+3277403264,3277403327,GB
+3277403328,3277403343,FR
+3277403344,3277403375,GB
+3277403376,3277403391,FR
+3277403392,3277403407,GB
+3277403408,3277403455,FR
3277403456,3277403471,AT
3277403472,3277403487,FR
-3277403488,3277403647,GB
-3277403648,3277403743,ES
-3277403744,3277403759,GB
-3277403760,3277403791,ES
+3277403488,3277403663,GB
+3277403664,3277403679,ES
+3277403680,3277403711,GB
+3277403712,3277403727,ES
+3277403728,3277403775,GB
+3277403776,3277403791,ES
3277403792,3277404159,GB
3277404160,3277404191,DE
-3277404192,3277404207,GB
-3277404208,3277404319,DE
+3277404192,3277404239,GB
+3277404240,3277404255,DE
+3277404256,3277404271,GB
+3277404272,3277404319,DE
3277404320,3277404335,GB
3277404336,3277404367,DE
3277404368,3277404383,GB
3277404384,3277404415,DE
-3277404416,3277404479,IT
-3277404480,3277404495,GB
+3277404416,3277404431,GB
+3277404432,3277404463,IT
+3277404464,3277404495,GB
3277404496,3277404511,IT
-3277404512,3277404527,GB
-3277404528,3277404623,IT
+3277404512,3277404559,GB
+3277404560,3277404575,IT
+3277404576,3277404591,GB
+3277404592,3277404623,IT
3277404624,3277404639,GB
3277404640,3277404671,IT
-3277404672,3277404799,CH
-3277404800,3277404927,GB
-3277404928,3277405055,NL
-3277405056,3277405183,GB
+3277404672,3277404927,GB
+3277404928,3277404943,NL
+3277404944,3277405183,GB
3277405184,3277405215,SE
3277405216,3277405231,GB
3277405232,3277405247,SE
@@ -136600,9 +145790,7 @@
3277716480,3277716991,SE
3277716992,3277717503,IT
3277717504,3277725695,YE
-3277725696,3277727743,CH
-3277727744,3277729791,GB
-3277729792,3277730157,CH
+3277725696,3277730157,CH
3277730158,3277730158,GB
3277730159,3277730559,CH
3277730560,3277730563,GB
@@ -136776,9 +145964,7 @@
3278782464,3278790143,GB
3278790144,3278790399,ES
3278790400,3278790655,GB
-3278790656,3278793727,IT
-3278793728,3278794751,GB
-3278794752,3278807039,IT
+3278790656,3278807039,IT
3278807040,3278815231,GB
3278815232,3278823423,AT
3278823424,3278831615,FR
@@ -137379,8 +146565,7 @@
3278942180,3278942183,FR
3278942184,3278942203,DE
3278942204,3278942207,CH
-3278942208,3278942211,TW
-3278942212,3278942443,DE
+3278942208,3278942443,DE
3278942444,3278942447,NZ
3278942448,3278942463,DE
3278942464,3278942467,SG
@@ -138326,7 +147511,7 @@
3278944061,3278944061,FR
3278944062,3278944063,DE
3278944064,3278944064,FR
-3278944065,3278944065,IT
+3278944065,3278944065,DE
3278944066,3278944066,GB
3278944067,3278944067,DE
3278944068,3278944068,ES
@@ -139043,8 +148228,14 @@
3279590912,3279591167,DE
3279591168,3279592703,GB
3279592704,3279592959,DE
-3279592960,3279593471,GB
-3279593472,3279596543,DE
+3279592960,3279593593,GB
+3279593594,3279593594,DE
+3279593595,3279593599,GB
+3279593600,3279593727,DE
+3279593728,3279593919,GB
+3279593920,3279593983,DE
+3279593984,3279595519,GB
+3279595520,3279596543,DE
3279596544,3279598591,GB
3279598592,3279599615,DE
3279599616,3279600639,GB
@@ -139168,7 +148359,8 @@
3280207872,3280273407,FR
3280273408,3280297983,RU
3280297984,3280306175,ES
-3280306176,3280314367,RU
+3280306176,3280310271,SG
+3280310272,3280314367,RU
3280314368,3280322559,ES
3280322560,3280325119,RU
3280325120,3280325631,US
@@ -139177,9 +148369,8 @@
3280327168,3280327679,RU
3280327680,3280328703,ES
3280328704,3280329727,RU
-3280329728,3280329904,IQ
-3280329905,3280329905,US
-3280329906,3280330751,IQ
+3280329728,3280329983,US
+3280329984,3280330751,IQ
3280330752,3280338943,RU
3280338944,3280347135,GB
3280347136,3280355327,NO
@@ -139530,7 +148721,14 @@
3281920000,3281928191,DE
3281928192,3281944575,MT
3281944576,3281960959,DE
-3281969152,3281969663,RU
+3281960960,3281961983,SE
+3281961984,3281963007,UA
+3281963008,3281964031,RO
+3281964032,3281965055,DE
+3281965056,3281966079,HK
+3281966080,3281967103,DE
+3281967104,3281968127,GB
+3281968128,3281969663,RU
3281969664,3281970175,PL
3281970176,3281970687,RU
3281970688,3281971199,CH
@@ -139614,7 +148812,20 @@
3282370560,3282436095,FI
3282436096,3282466855,GB
3282466856,3282466863,IT
-3282466864,3282468095,GB
+3282466864,3282466959,GB
+3282466960,3282466967,SI
+3282466968,3282466991,GB
+3282466992,3282466999,SI
+3282467000,3282467095,GB
+3282467096,3282467103,HR
+3282467104,3282467111,ES
+3282467112,3282467119,GB
+3282467120,3282467127,HR
+3282467128,3282467135,GB
+3282467136,3282467143,ES
+3282467144,3282467175,GB
+3282467176,3282467183,ES
+3282467184,3282468095,GB
3282468096,3282468351,DE
3282468352,3282477055,GB
3282477056,3282485247,RU
@@ -139847,7 +149058,8 @@
3283563520,3283564543,GB
3283568640,3283569663,GB
3283576832,3283578879,DE
-3283593216,3283594239,IT
+3283586304,3283586559,ES
+3283593216,3283595263,IT
3283615744,3283623935,HU
3283623936,3283632127,DK
3283632128,3283632639,NL
@@ -139906,7 +149118,7 @@
3283975168,3283976191,GB
3283976192,3283976703,IE
3283976704,3283977215,DK
-3283977216,3283977727,UA
+3283977216,3283977727,BY
3283977728,3283978751,RU
3283978752,3283979263,RO
3283979264,3283979775,IL
@@ -139970,7 +149182,7 @@
3284011520,3284011775,HR
3284011776,3284012031,DE
3284012032,3284012287,RU
-3284012288,3284012543,PL
+3284012288,3284012543,UA
3284012544,3284012799,RU
3284012800,3284013311,AT
3284013312,3284013567,PL
@@ -140240,7 +149452,8 @@
3284727808,3284728319,RU
3284728320,3284728831,UA
3284728832,3284729343,PT
-3284729344,3284729855,FR
+3284729344,3284729599,GB
+3284729600,3284729855,FR
3284729856,3284795391,DE
3284795392,3284803583,FR
3284803584,3284811775,DE
@@ -140552,9 +149765,7 @@
3285931560,3285931567,HU
3285931568,3285931599,DE
3285931608,3285931615,DE
-3285934080,3285934847,ES
-3285934848,3285935103,GB
-3285935104,3285935871,ES
+3285934080,3285935871,ES
3285935872,3285936127,GB
3285936136,3285936147,FR
3285936152,3285936231,FR
@@ -140571,9 +149782,11 @@
3285948416,3285948671,BH
3285949604,3285949607,CH
3285950208,3285950463,IT
-3285953536,3285954047,GB
+3285953536,3285953665,GB
+3285953672,3285953743,GB
+3285953792,3285953919,GB
+3285953992,3285953999,GB
3285954048,3285954303,AE
-3285954304,3285954559,GB
3285954560,3285954567,IT
3285954568,3285954575,PL
3285954576,3285954815,GB
@@ -140590,6 +149803,7 @@
3286013952,3286106111,FR
3286108920,3286108927,EE
3286109792,3286109795,EE
+3286110208,3286112255,EE
3286113024,3286113151,EE
3286114304,3286122495,BA
3286122496,3286130687,BY
@@ -140668,14 +149882,11 @@
3286368256,3286376447,CH
3286376448,3286384639,GB
3286384640,3286401023,DE
-3286401024,3286403071,GB
+3286401024,3286402047,GG
+3286402048,3286403071,GB
3286403072,3286403199,JE
3286403200,3286403327,GG
-3286403328,3286403583,JE
-3286403584,3286405119,GG
-3286405120,3286406143,JE
-3286406144,3286406655,GB
-3286406656,3286407167,JE
+3286403328,3286407167,JE
3286407168,3286408703,GG
3286408704,3286408959,GB
3286408960,3286409215,GG
@@ -140721,9 +149932,7 @@
3286514688,3286552575,HU
3286552576,3286553087,BG
3286553088,3286564863,HU
-3286564864,3286566655,AE
-3286566656,3286566911,KW
-3286566912,3286630399,AE
+3286564864,3286630399,AE
3286630400,3286638591,BG
3286638592,3286646783,AT
3286646784,3286654975,RU
@@ -140790,10 +149999,8 @@
3286791680,3286791935,AT
3286791936,3286794239,GB
3286794240,3286798335,DE
-3286798336,3286799359,IT
-3286799360,3286888447,DE
-3286888448,3286889471,IE
-3286889472,3286892543,DE
+3286798336,3286800383,IT
+3286800384,3286892543,DE
3286892544,3286893055,LI
3286893056,3286893567,RU
3286893568,3286894591,UA
@@ -140986,6 +150193,7 @@
3287433728,3287434239,DE
3287434240,3287434751,PL
3287434752,3287435263,GB
+3287435264,3287436287,ES
3287436288,3287436799,RS
3287436800,3287437311,US
3287437312,3287437823,UA
@@ -141149,8 +150357,7 @@
3287675904,3287676159,RU
3287676160,3287676415,DE
3287676672,3287676927,GB
-3287676928,3287677183,ES
-3287677184,3287677439,RU
+3287676928,3287677439,ES
3287677440,3287677695,SI
3287677696,3287677951,RO
3287677952,3287678207,GB
@@ -141284,7 +150491,9 @@
3287965696,3287973887,RS
3287973888,3287982079,CZ
3287982080,3287990271,EE
-3287990272,3287996415,SI
+3287990272,3287994367,SI
+3287994368,3287995391,BA
+3287995392,3287996415,SI
3287996416,3287998463,BA
3287998464,3288006655,IT
3288006656,3288072191,GR
@@ -141320,7 +150529,9 @@
3288251392,3288251903,RU
3288251904,3288252415,AT
3288252416,3288260607,NO
-3288260608,3288268799,IT
+3288260608,3288262655,IT
+3288262656,3288262911,DE
+3288262912,3288268799,IT
3288268800,3288334335,FI
3288334336,3288399871,UG
3288399872,3288400127,MU
@@ -141394,7 +150605,8 @@
3288532992,3288534527,PR
3288534528,3288535039,EG
3288535040,3288539135,CW
-3288539136,3288543743,US
+3288539136,3288541183,BR
+3288541184,3288543743,US
3288543744,3288543983,CH
3288543984,3288543986,US
3288543987,3288543987,CH
@@ -141538,11 +150750,7 @@
3289153536,3289155839,MU
3289155840,3289156351,RW
3289156352,3289156607,MU
-3289156608,3289158655,RW
-3289158656,3289159167,MU
-3289159168,3289159423,RW
-3289159424,3289159679,MU
-3289159680,3289160703,RW
+3289156608,3289160703,RW
3289160704,3289161727,MU
3289161728,3289169919,PR
3289169920,3289186303,MA
@@ -141612,19 +150820,23 @@
3289403392,3289404415,GB
3289404416,3289405439,US
3289405440,3289406463,GB
-3289406464,3289409535,US
+3289406464,3289407487,US
+3289407488,3289408511,NO
+3289408512,3289409535,CH
3289409536,3289410047,BE
3289410048,3289410559,CH
3289410560,3289411583,US
3289411584,3289412607,NL
-3289412608,3289413631,US
+3289412608,3289413631,CA
3289413632,3289414143,GB
3289414144,3289414655,RU
3289414656,3289422847,US
3289422848,3289423871,NL
3289423872,3289430015,US
-3289430016,3289431039,GB
-3289431040,3289434111,US
+3289430016,3289431039,DK
+3289431040,3289432063,US
+3289432064,3289433087,CH
+3289433088,3289434111,US
3289434112,3289434367,GB
3289434368,3289435135,SC
3289435136,3289438207,US
@@ -141648,7 +150860,10 @@
3289446400,3289446655,ID
3289446656,3289446911,US
3289446912,3289447167,BG
-3289447168,3289465855,US
+3289447168,3289448447,US
+3289448448,3289449471,CH
+3289449472,3289452543,SE
+3289452544,3289465855,US
3289465856,3289466879,AU
3289466880,3289467903,US
3289467904,3289468927,AU
@@ -141663,15 +150878,19 @@
3289475584,3289475839,GB
3289475840,3289476095,SC
3289476096,3289477119,US
-3289477120,3289478143,GB
-3289478144,3289488383,US
+3289477120,3289477631,GB
+3289477632,3289478143,DK
+3289478144,3289480191,US
+3289480192,3289481215,CA
+3289481216,3289488383,US
3289488384,3289490431,NL
3289490432,3289491455,US
3289491456,3289492479,GB
3289492480,3289493503,US
3289493504,3289494527,GB
3289494528,3289495551,US
-3289495552,3289496575,GB
+3289495552,3289496063,GB
+3289496064,3289496575,IT
3289496576,3289499647,US
3289499648,3289499903,GB
3289499904,3289500671,SC
@@ -141697,11 +150916,12 @@
3289540608,3289541119,ES
3289541120,3289541631,AU
3289541632,3289542655,US
-3289542656,3289543679,GB
+3289542656,3289543167,GB
+3289543168,3289543679,DK
3289543680,3289544703,US
3289544704,3289545727,AU
3289545728,3289553919,US
-3289553920,3289554943,GB
+3289553920,3289554943,DK
3289554944,3289555967,US
3289555968,3289556991,GB
3289556992,3289558015,US
@@ -141732,17 +150952,21 @@
3289572608,3289572863,HK
3289572864,3289581567,US
3289581568,3289582591,DE
-3289582592,3289606143,US
+3289582592,3289604095,US
+3289604096,3289606143,NO
3289606144,3289606655,AT
3289606656,3289607167,HK
3289607168,3289610239,US
3289610240,3289611263,DE
-3289611264,3289630719,US
+3289611264,3289620479,US
+3289620480,3289621503,IT
+3289621504,3289630719,US
3289630720,3289630975,GB
3289630976,3289631743,SC
3289631744,3289634815,US
3289634816,3289635327,LT
-3289635328,3289636863,SC
+3289635328,3289635583,GB
+3289635584,3289636863,SC
3289636864,3289637887,CN
3289637888,3289638911,AU
3289638912,3289639935,US
@@ -141777,9 +151001,7 @@
3289812992,3289817087,MU
3289817088,3289907199,ZA
3289907200,3289908223,LS
-3289908224,3289923583,ZA
-3289923584,3289924607,SZ
-3289924608,3290031103,ZA
+3289908224,3290031103,ZA
3290031104,3290031359,LS
3290031360,3290060287,ZA
3290060288,3290060543,SZ
@@ -141797,7 +151019,9 @@
3290172160,3290172415,KE
3290172416,3290181631,ZA
3290181632,3290181887,US
-3290181888,3290185105,PR
+3290181888,3290183935,PR
+3290183936,3290184191,US
+3290184192,3290185105,PR
3290185106,3290185106,US
3290185107,3290185107,PR
3290185108,3290185108,US
@@ -142003,8 +151227,8 @@
3291431168,3291432959,NA
3291432960,3291433471,ZA
3291433472,3291433983,NA
-3291433984,3291435263,ZA
-3291435264,3291435519,NA
+3291433984,3291435007,ZA
+3291435008,3291435519,NA
3291435520,3291435775,ZA
3291435776,3291437055,NA
3291437056,3291437567,ZA
@@ -142054,6 +151278,7 @@
3291560960,3291561215,CG
3291561472,3291561727,NG
3291561984,3291562239,GN
+3291562496,3291562751,SD
3291611136,3291611647,ZA
3291611648,3291611903,MU
3291611904,3291612159,ZA
@@ -142151,20 +151376,17 @@
3291827456,3291827711,TW
3291827712,3291828735,US
3291828736,3291829247,CA
-3291829248,3291830271,US
-3291830272,3291831295,KH
-3291831296,3291831807,US
-3291831808,3291832063,KH
-3291832064,3291833343,US
+3291829248,3291833343,US
3291833344,3291834367,DE
3291834368,3291835391,SE
-3291835392,3291835647,US
-3291835648,3291836159,DE
-3291836160,3291857151,US
+3291835392,3291857151,US
3291857152,3291857407,CH
-3291857408,3291873535,US
+3291857408,3291865087,US
+3291865088,3291867135,MX
+3291867136,3291873535,US
3291873536,3291873791,CA
-3291873792,3291875327,US
+3291873792,3291874047,CY
+3291874048,3291875327,US
3291875328,3291875839,CA
3291875840,3291877887,US
3291877888,3291878143,AU
@@ -142219,17 +151441,13 @@
3291970048,3291970559,CA
3291970560,3291971583,US
3291971584,3291972607,JP
-3291972608,3291975679,US
-3291975680,3291979775,CA
-3291979776,3292004351,US
+3291972608,3292004351,US
3292004352,3292004607,SE
3292004608,3292004863,DK
3292004864,3292005119,SC
3292005120,3292005375,US
3292005376,3292005631,CZ
-3292005632,3292005887,SC
-3292005888,3292006143,US
-3292006144,3292006399,SC
+3292005632,3292006399,SC
3292006400,3292007167,US
3292007168,3292007423,SC
3292007424,3292008191,US
@@ -142251,9 +151469,7 @@
3292013312,3292013567,US
3292013568,3292015103,SC
3292015104,3292015615,US
-3292015616,3292015871,SC
-3292015872,3292016127,US
-3292016128,3292016383,SC
+3292015616,3292016383,SC
3292016384,3292016639,US
3292016640,3292016895,SC
3292016896,3292017151,US
@@ -142270,7 +151486,9 @@
3292023040,3292023807,SC
3292023808,3292024575,US
3292024576,3292025599,SC
-3292025600,3292027135,US
+3292025600,3292026111,US
+3292026112,3292026367,SC
+3292026368,3292027135,US
3292027136,3292028159,SC
3292028160,3292028415,US
3292028416,3292028671,SC
@@ -142304,8 +151522,8 @@
3292046080,3292046591,SC
3292046592,3292047615,US
3292047616,3292047871,SC
-3292047872,3292048383,US
-3292048384,3292049407,SC
+3292047872,3292048127,US
+3292048128,3292049407,SC
3292049408,3292050175,US
3292050176,3292050431,SC
3292050432,3292050687,US
@@ -142320,7 +151538,9 @@
3292053504,3292053759,SC
3292053760,3292054015,US
3292054016,3292054527,SC
-3292054528,3292055807,US
+3292054528,3292055295,US
+3292055296,3292055551,SC
+3292055552,3292055807,US
3292055808,3292056063,SC
3292056064,3292056319,US
3292056320,3292056831,SC
@@ -142338,8 +151558,8 @@
3292064000,3292064511,SC
3292064512,3292064767,US
3292064768,3292065023,SC
-3292065024,3292065791,US
-3292065792,3292066303,SC
+3292065024,3292065535,US
+3292065536,3292066303,SC
3292066304,3292066559,US
3292066560,3292066815,SC
3292066816,3292067327,US
@@ -142349,7 +151569,7 @@
3292069376,3292069631,DE
3292069632,3292069887,AU
3292069888,3292070143,SE
-3292070144,3292070399,DK
+3292070144,3292070399,SC
3292070400,3292070911,US
3292070912,3292071167,SC
3292071168,3292071935,US
@@ -142366,11 +151586,9 @@
3292076288,3292078079,SC
3292078080,3292078335,US
3292078336,3292078591,SC
-3292078592,3292078847,US
-3292078848,3292079615,SC
-3292079616,3292080127,US
-3292080128,3292080383,SC
-3292080384,3292081407,US
+3292078592,3292079103,US
+3292079104,3292079615,SC
+3292079616,3292081407,US
3292081408,3292082175,SC
3292082176,3292082431,US
3292082432,3292082687,SC
@@ -142384,13 +151602,13 @@
3292085248,3292085503,SC
3292085504,3292085759,US
3292085760,3292086527,SC
-3292086528,3292088063,US
+3292086528,3292087551,US
+3292087552,3292087807,SC
+3292087808,3292088063,US
3292088064,3292088319,SC
3292088320,3292088575,US
3292088576,3292088831,SC
-3292088832,3292089087,US
-3292089088,3292089343,SC
-3292089344,3292089599,US
+3292088832,3292089599,US
3292089600,3292090111,SC
3292090112,3292090367,US
3292090368,3292090623,SC
@@ -142456,8 +151674,8 @@
3292117760,3292118783,SC
3292118784,3292119039,US
3292119040,3292119295,SC
-3292119296,3292119551,US
-3292119552,3292120063,SC
+3292119296,3292119807,US
+3292119808,3292120063,SC
3292120064,3292120319,US
3292120320,3292121087,SC
3292121088,3292121343,US
@@ -142468,10 +151686,12 @@
3292123648,3292123903,SC
3292123904,3292124159,US
3292124160,3292124415,SC
-3292124416,3292125183,US
-3292125184,3292126207,SC
-3292126208,3292126463,US
-3292126464,3292127487,SC
+3292124416,3292124671,US
+3292124672,3292124927,SC
+3292124928,3292125183,US
+3292125184,3292125951,SC
+3292125952,3292126719,US
+3292126720,3292127487,SC
3292127488,3292127743,US
3292127744,3292128255,SC
3292128256,3292128767,US
@@ -142480,14 +151700,16 @@
3292129536,3292130047,SC
3292130048,3292130815,US
3292130816,3292131327,SC
-3292131328,3292131583,US
-3292131584,3292132095,SC
+3292131328,3292131839,US
+3292131840,3292132095,SC
3292132096,3292132607,US
3292132608,3292132863,SC
3292132864,3292133119,US
3292133120,3292133375,SC
3292133376,3292133887,US
-3292133888,3292135167,SC
+3292133888,3292134143,SC
+3292134144,3292134399,US
+3292134400,3292135167,SC
3292135168,3292135423,AU
3292135424,3292135679,SE
3292135680,3292135935,DK
@@ -142503,8 +151725,8 @@
3292139776,3292140031,US
3292140032,3292140543,SC
3292140544,3292140799,US
-3292140800,3292141311,SC
-3292141312,3292141823,US
+3292140800,3292141055,SC
+3292141056,3292141823,US
3292141824,3292143359,SC
3292143360,3292143615,US
3292143616,3292144127,SC
@@ -142552,7 +151774,9 @@
3292164096,3292164351,SC
3292164352,3292165119,US
3292165120,3292166143,SC
-3292166144,3292166911,US
+3292166144,3292166399,US
+3292166400,3292166655,SC
+3292166656,3292166911,US
3292166912,3292167679,SC
3292167680,3292167935,US
3292167936,3292168447,SC
@@ -142563,12 +151787,12 @@
3292172032,3292172799,US
3292172800,3292173567,SC
3292173568,3292173823,US
-3292173824,3292174079,SC
-3292174080,3292174335,US
-3292174336,3292175359,SC
+3292173824,3292175359,SC
3292175360,3292175615,US
3292175616,3292175871,SC
-3292175872,3292177151,US
+3292175872,3292176127,US
+3292176128,3292176383,SC
+3292176384,3292177151,US
3292177152,3292177407,SC
3292177408,3292178431,US
3292178432,3292180223,SC
@@ -142604,9 +151828,7 @@
3292192256,3292193023,SC
3292193024,3292194303,US
3292194304,3292194815,SC
-3292194816,3292195327,US
-3292195328,3292195583,SC
-3292195584,3292195839,US
+3292194816,3292195839,US
3292195840,3292196607,SC
3292196608,3292197119,US
3292197120,3292197631,SC
@@ -142657,9 +151879,7 @@
3292219392,3292219903,SC
3292219904,3292220159,US
3292220160,3292220415,SC
-3292220416,3292220671,US
-3292220672,3292220927,SC
-3292220928,3292221183,US
+3292220416,3292221183,US
3292221184,3292221439,SC
3292221440,3292221695,US
3292221696,3292222975,SC
@@ -142667,8 +151887,8 @@
3292223232,3292223487,SC
3292223488,3292225023,US
3292225024,3292225535,SC
-3292225536,3292226303,US
-3292226304,3292226559,SC
+3292225536,3292226047,US
+3292226048,3292226559,SC
3292226560,3292226815,US
3292226816,3292227071,SC
3292227072,3292227839,US
@@ -142727,7 +151947,9 @@
3292254208,3292256255,SC
3292256256,3292256511,US
3292256512,3292256767,SC
-3292256768,3292257791,US
+3292256768,3292257279,US
+3292257280,3292257535,SC
+3292257536,3292257791,US
3292257792,3292258303,SC
3292258304,3292259327,US
3292259328,3292259583,SC
@@ -142738,9 +151960,7 @@
3292262912,3292263167,US
3292263168,3292263679,SC
3292263680,3292263935,US
-3292263936,3292264191,SC
-3292264192,3292264447,US
-3292264448,3292264703,SC
+3292263936,3292264703,SC
3292264704,3292264959,US
3292264960,3292265215,SC
3292265216,3292265727,US
@@ -142821,9 +152041,9 @@
3301174272,3301175295,UG
3301175296,3301176831,AF
3301176832,3301177087,DE
-3301177088,3301178111,AF
-3301178112,3301178367,DE
-3301178368,3301179139,AF
+3301177088,3301178897,AF
+3301178898,3301178898,DE
+3301178899,3301179139,AF
3301179140,3301179140,DE
3301179141,3301179391,AF
3301179392,3301179903,RU
@@ -142887,301 +152107,189 @@
3301308416,3301309439,SG
3301309440,3301310463,BR
3301310464,3301310975,US
-3301310976,3301311231,SC
+3301310976,3301310976,AT
+3301310977,3301311231,SC
3301311232,3301311487,FR
3301311488,3301311743,DE
-3301311744,3301313023,SC
+3301311744,3301311999,DK
+3301312000,3301312255,CZ
+3301312256,3301312511,LV
+3301312512,3301312767,BE
+3301312768,3301313023,AT
3301313024,3301313279,AU
-3301313280,3301313791,SC
+3301313280,3301313535,HK
+3301313536,3301313791,HU
3301313792,3301314047,LU
-3301314048,3301314303,SC
+3301314048,3301314303,NZ
3301314304,3301314559,NO
-3301314560,3301315071,SC
+3301314560,3301314815,US
+3301314816,3301315071,PT
3301315072,3301315327,ES
-3301315328,3301315583,SC
+3301315328,3301315583,CH
3301315584,3301315839,NL
-3301315840,3301316095,SC
-3301316096,3301316351,US
-3301316352,3301316607,SC
-3301316608,3301316863,US
-3301316864,3301317375,SC
-3301317376,3301318399,US
-3301318400,3301318655,SC
-3301318656,3301318911,US
-3301318912,3301319679,SC
-3301319680,3301319935,US
-3301319936,3301320447,SC
-3301320448,3301320959,US
-3301320960,3301321215,SC
-3301321216,3301321471,US
-3301321472,3301321983,SC
-3301321984,3301322239,US
-3301322240,3301322495,CA
-3301322496,3301322751,SC
-3301322752,3301323007,CA
-3301323008,3301323263,SC
-3301323264,3301323519,US
-3301323520,3301324031,SC
-3301324032,3301324543,US
-3301324544,3301325311,SC
-3301325312,3301325823,US
-3301325824,3301329151,SC
+3301315840,3301316095,GB
+3301316096,3301322239,US
+3301322240,3301323007,CA
+3301323008,3301326591,US
+3301326592,3301326847,BR
+3301326848,3301327103,SG
+3301327104,3301327359,RU
+3301327360,3301328127,SC
+3301328128,3301328383,IN
+3301328384,3301328639,AT
+3301328640,3301328895,FR
+3301328896,3301329151,DE
3301329152,3301329407,DK
3301329408,3301329663,CZ
-3301329664,3301330687,SC
-3301330688,3301330943,HK
-3301330944,3301331199,HU
-3301331200,3301331455,LU
-3301331456,3301331711,NZ
-3301331712,3301331967,NO
-3301331968,3301332223,SC
-3301332224,3301332479,PT
-3301332480,3301332735,ES
-3301332736,3301332991,SC
+3301329664,3301329919,LV
+3301329920,3301332991,US
3301332992,3301333247,NL
-3301333248,3301333503,SC
-3301333504,3301334015,US
-3301334016,3301334527,SC
-3301334528,3301335295,US
-3301335296,3301337087,SC
-3301337088,3301338111,US
-3301338112,3301339647,SC
-3301339648,3301339903,US
-3301339904,3301340159,SC
-3301340160,3301340415,US
-3301340416,3301340671,SC
-3301340672,3301341439,US
-3301341440,3301341951,SC
-3301341952,3301342463,US
-3301342464,3301342975,SC
-3301342976,3301343743,US
-3301343744,3301343999,SC
+3301333248,3301333503,GB
+3301333504,3301341183,US
+3301341184,3301342207,PR
+3301342208,3301343999,US
3301344000,3301344255,SG
-3301344256,3301344511,RU
+3301344256,3301344511,US
3301344512,3301344767,IN
3301344768,3301345023,AT
3301345024,3301345279,FR
-3301345280,3301345535,SC
-3301345536,3301345791,DK
-3301345792,3301346047,CZ
-3301346048,3301346303,SC
+3301345280,3301346047,PR
+3301346048,3301346303,US
3301346304,3301346559,BE
-3301346560,3301348095,SC
-3301348096,3301348351,NO
-3301348352,3301349119,SC
-3301349120,3301349375,CH
-3301349376,3301349631,SC
+3301346560,3301349631,US
3301349632,3301349887,GB
-3301349888,3301350143,SC
-3301350144,3301350399,US
-3301350400,3301351423,SC
-3301351424,3301351935,US
-3301351936,3301352703,SC
+3301349888,3301352447,US
+3301352448,3301352703,NL
3301352704,3301352959,US
-3301352960,3301353471,SC
-3301353472,3301354239,US
-3301354240,3301354751,SC
-3301354752,3301355007,US
-3301355008,3301355263,SC
-3301355264,3301355519,US
-3301355520,3301356543,SC
-3301356544,3301357567,US
-3301357568,3301357823,SC
-3301357824,3301358335,US
-3301358336,3301359359,SC
-3301359360,3301359615,US
-3301359616,3301360639,SC
-3301360640,3301360895,RU
-3301360896,3301361151,SC
-3301361152,3301361407,AT
+3301352960,3301353471,NL
+3301353472,3301354495,CH
+3301354496,3301355519,ES
+3301355520,3301356543,PT
+3301356544,3301357311,PL
+3301357312,3301360383,US
+3301360384,3301360639,SG
+3301360640,3301360895,US
+3301360896,3301361151,IN
+3301361152,3301361407,US
3301361408,3301361663,FR
-3301361664,3301361919,DE
-3301361920,3301362175,DK
-3301362176,3301362431,CZ
-3301362432,3301362687,LV
-3301362688,3301362943,BE
-3301362944,3301363199,AT
-3301363200,3301363711,SC
-3301363712,3301363967,HU
-3301363968,3301364223,LU
-3301364224,3301364479,SC
-3301364480,3301364735,NO
+3301361664,3301362175,DE
+3301362176,3301363199,US
+3301363200,3301363455,AU
+3301363456,3301363711,CN
+3301363712,3301364735,AT
3301364736,3301364991,PL
3301364992,3301365247,PT
3301365248,3301365503,ES
3301365504,3301365759,CH
3301365760,3301366015,NL
-3301366016,3301366783,SC
-3301366784,3301367039,US
-3301367040,3301367551,SC
-3301367552,3301367807,US
-3301367808,3301368319,SC
-3301368320,3301368831,US
-3301368832,3301371391,SC
-3301371392,3301372159,US
-3301372160,3301373183,SC
-3301373184,3301373439,US
-3301373440,3301373695,SC
-3301373696,3301374207,US
-3301374208,3301374463,SC
-3301374464,3301374975,US
-3301374976,3301375231,SC
-3301375232,3301376511,US
-3301376512,3301378815,SC
-3301378816,3301379327,US
-3301379328,3301379583,SC
-3301379584,3301380095,US
-3301380096,3301380351,CA
-3301380352,3301380607,SC
-3301380608,3301381375,US
-3301381376,3301381631,SC
-3301381632,3301382655,US
-3301382656,3301382911,SC
-3301382912,3301383423,US
-3301383424,3301383679,SC
-3301383680,3301384191,US
-3301384192,3301384447,SC
-3301384448,3301384703,US
-3301384704,3301385215,SC
-3301385216,3301385727,US
-3301385728,3301386239,SC
-3301386240,3301386495,US
-3301386496,3301387007,SC
+3301366016,3301366271,GB
+3301366272,3301372159,US
+3301372160,3301372927,CA
+3301372928,3301377535,US
+3301377536,3301377791,SC
+3301377792,3301379583,US
+3301379584,3301380351,CA
+3301380352,3301386239,US
+3301386240,3301386495,GB
+3301386496,3301386751,NL
+3301386752,3301387007,CH
3301387008,3301387263,ES
3301387264,3301387519,PT
3301387520,3301387775,PL
-3301387776,3301388287,SC
+3301387776,3301388031,NO
+3301388032,3301388287,NZ
3301388288,3301388543,LU
-3301388544,3301389311,SC
+3301388544,3301388799,HU
+3301388800,3301389055,HK
+3301389056,3301389311,AU
3301389312,3301389567,AT
3301389568,3301389823,BE
3301389824,3301390079,LV
-3301390080,3301390335,SC
-3301390336,3301390591,US
+3301390080,3301390335,CZ
+3301390336,3301390591,DK
3301390592,3301390847,DE
-3301390848,3301391103,US
-3301391104,3301391359,SC
+3301390848,3301391103,FR
+3301391104,3301391359,AT
3301391360,3301391615,IN
3301391616,3301391871,RU
-3301391872,3301392383,SC
-3301392384,3301392895,US
-3301392896,3301393151,SC
-3301393152,3301393407,US
-3301393408,3301393663,SC
-3301393664,3301394175,US
-3301394176,3301394431,SC
-3301394432,3301394687,US
-3301394688,3301395199,SC
-3301395200,3301396223,US
-3301396224,3301396479,SC
-3301396480,3301396735,CA
-3301396736,3301398527,SC
-3301398528,3301399039,US
-3301399040,3301399551,SC
-3301399552,3301399807,US
-3301399808,3301400063,SC
-3301400064,3301400319,US
-3301400320,3301400831,SC
-3301400832,3301401343,US
-3301401344,3301401599,SC
-3301401600,3301402623,US
+3301391872,3301392127,SG
+3301392128,3301392383,BR
+3301392384,3301395967,US
+3301395968,3301396735,CA
+3301396736,3301402623,US
3301402624,3301402879,GB
3301402880,3301403135,NL
-3301403136,3301403391,SC
+3301403136,3301403391,CH
3301403392,3301403647,ES
-3301403648,3301404159,SC
+3301403648,3301403903,PT
+3301403904,3301404159,PL
3301404160,3301404415,NO
3301404416,3301404671,NZ
3301404672,3301404927,LU
3301404928,3301405183,HU
-3301405184,3301405439,SC
+3301405184,3301405439,HK
3301405440,3301405695,AU
3301405696,3301405951,AT
-3301405952,3301406463,SC
+3301405952,3301406207,BE
+3301406208,3301406463,LV
3301406464,3301406719,CZ
3301406720,3301406975,DK
-3301406976,3301407231,SC
+3301406976,3301406976,DE
+3301406977,3301407231,SC
3301407232,3301407487,FR
-3301407488,3301408255,SC
+3301407488,3301407743,AT
+3301407744,3301407999,IN
+3301408000,3301408255,RU
3301408256,3301408511,SG
3301408512,3301408767,BR
-3301408768,3301409023,US
-3301409024,3301410047,SC
-3301410048,3301410559,US
-3301410560,3301410815,SC
-3301410816,3301411071,US
-3301411072,3301411583,SC
-3301411584,3301412095,US
-3301412096,3301412351,SC
-3301412352,3301412607,US
-3301412608,3301412863,SC
-3301412864,3301413119,CA
-3301413120,3301413887,US
-3301413888,3301414143,SC
-3301414144,3301414399,US
-3301414400,3301414911,SC
-3301414912,3301415679,US
-3301415680,3301415935,SC
-3301415936,3301416191,US
-3301416192,3301416447,SC
-3301416448,3301417471,US
-3301417472,3301417727,SC
-3301417728,3301418239,US
-3301418240,3301418495,SC
-3301418496,3301418751,US
-3301418752,3301419263,SC
+3301408768,3301412351,US
+3301412352,3301413119,CA
+3301413120,3301419007,US
+3301419008,3301419263,GB
3301419264,3301419519,NL
3301419520,3301419775,CH
3301419776,3301420031,ES
-3301420032,3301420287,SC
+3301420032,3301420287,PT
3301420288,3301420543,PL
-3301420544,3301420799,US
-3301420800,3301421055,SC
-3301421056,3301421311,US
+3301420544,3301420799,NO
+3301420800,3301421055,NZ
+3301421056,3301421311,LU
3301421312,3301421567,HU
3301421568,3301421823,HK
-3301421824,3301422847,SC
+3301421824,3301422079,AU
+3301422080,3301422335,AT
+3301422336,3301422591,BE
+3301422592,3301422847,LV
3301422848,3301423103,CZ
-3301423104,3301423359,US
-3301423360,3301423615,SC
+3301423104,3301423359,DK
+3301423360,3301423615,DE
3301423616,3301423871,FR
-3301423872,3301424127,SC
+3301423872,3301424127,AT
3301424128,3301424383,IN
3301424384,3301424639,RU
-3301424640,3301425407,SC
-3301425408,3301425663,US
-3301425664,3301425919,SC
-3301425920,3301426175,US
-3301426176,3301427199,SC
-3301427200,3301428479,US
-3301428480,3301428991,SC
-3301428992,3301429503,US
-3301429504,3301430015,SC
-3301430016,3301430271,US
-3301430272,3301430783,SC
-3301430784,3301431295,US
-3301431296,3301432575,SC
-3301432576,3301433087,US
-3301433088,3301433343,SC
-3301433344,3301433599,US
-3301433600,3301433855,SC
-3301433856,3301435391,US
-3301435392,3301435647,SC
+3301424640,3301424895,SG
+3301424896,3301425151,BR
+3301425152,3301428735,US
+3301428736,3301429503,CA
+3301429504,3301429504,US
+3301429505,3301429759,SC
+3301429760,3301430528,US
+3301430529,3301430783,SC
+3301430784,3301435391,US
+3301435392,3301435647,GB
3301435648,3301435903,NL
-3301435904,3301436159,SC
+3301435904,3301436159,CH
3301436160,3301436415,ES
3301436416,3301437439,US
3301437440,3301437695,LU
-3301437696,3301437951,SC
+3301437696,3301437951,US
3301437952,3301438207,HK
-3301438208,3301438463,SC
+3301438208,3301438463,AU
3301438464,3301438719,AT
-3301438720,3301439231,US
-3301439232,3301439487,SC
+3301438720,3301439487,US
3301439488,3301439743,DK
-3301439744,3301439999,SC
-3301440000,3301441279,US
-3301441280,3301441535,SC
+3301439744,3301439999,DE
+3301440000,3301441535,US
3301441536,3301445631,ZA
3301445632,3301453823,KE
3301453824,3301457919,ML
@@ -143199,8 +152307,10 @@
3301508096,3301508607,GH
3301508608,3301509119,ZA
3301509120,3301510143,SS
-3301511168,3301512191,ZW
-3301512192,3301513215,MU
+3301511168,3301512703,ZW
+3301512704,3301513023,MU
+3301513024,3301513087,ZW
+3301513088,3301513215,MU
3301513216,3301515263,EG
3301515264,3301523455,GH
3301523456,3301531647,CI
@@ -143237,7 +152347,8 @@
3302492160,3302494207,MW
3302494208,3302496255,ZA
3302496256,3302498303,EG
-3302498304,3302502399,NA
+3302498304,3302500351,NA
+3302500352,3302502399,ZA
3302502400,3302505471,AO
3302505472,3302506495,NA
3302506496,3302508543,KE
@@ -143479,7 +152590,8 @@
3304195072,3304195327,DE
3304195328,3304196351,SC
3304196352,3304196607,AT
-3304196608,3304197119,SC
+3304196608,3304196863,SC
+3304196864,3304197119,HK
3304197120,3304197375,HU
3304197376,3304198143,SC
3304198144,3304198399,PL
@@ -143521,12 +152633,14 @@
3304215040,3304215295,NZ
3304215296,3304215551,SC
3304215552,3304215807,PL
-3304215808,3304216063,SC
+3304215808,3304216063,PT
3304216064,3304216319,ES
3304216320,3304216575,CH
3304216576,3304216831,NL
3304216832,3304217087,GB
-3304217088,3304218367,SC
+3304217088,3304217855,SC
+3304217856,3304218111,US
+3304218112,3304218367,SC
3304218368,3304219135,US
3304219136,3304219391,SC
3304219392,3304219647,US
@@ -143588,7 +152702,8 @@
3304242688,3304244991,SC
3304244992,3304245247,FR
3304245248,3304245503,DE
-3304245504,3304246271,SC
+3304245504,3304245759,DK
+3304245760,3304246271,SC
3304246272,3304246527,BE
3304246528,3304246783,SC
3304246784,3304247039,AU
@@ -143712,8 +152827,8 @@
3304362752,3304363007,NO
3304363008,3304363775,SC
3304363776,3304364031,CH
-3304364032,3304365055,SC
-3304365056,3304365567,US
+3304364032,3304364799,SC
+3304364800,3304365567,US
3304365568,3304365823,SC
3304365824,3304366847,US
3304366848,3304367103,SC
@@ -143775,36 +152890,36 @@
3304389888,3304390143,US
3304390144,3304390399,SC
3304390400,3304403967,US
-3304403968,3304404991,SC
-3304404992,3304407039,US
-3304407040,3304408063,CA
+3304403968,3304404991,ES
+3304404992,3304408063,CA
3304408064,3304428543,US
3304428544,3304430591,SK
-3304430592,3304431615,SC
+3304430592,3304431615,RO
3304431616,3304432639,GB
3304432640,3304433663,NL
-3304433664,3304434687,SC
+3304433664,3304434687,SZ
3304434688,3304435711,ES
3304435712,3304436735,PT
3304436736,3304437759,PL
3304437760,3304438783,NO
3304438784,3304439807,NZ
3304439808,3304440831,LU
-3304440832,3304441855,SC
+3304440832,3304441855,HU
3304441856,3304442879,HK
3304442880,3304443903,AU
3304443904,3304444927,AT
-3304444928,3304445951,SC
+3304444928,3304445951,BE
3304445952,3304446463,FI
3304446464,3304446719,SC
3304446720,3304446975,FI
3304446976,3304447999,CZ
3304448000,3304449023,DK
-3304449024,3304450047,SC
+3304449024,3304450047,DE
3304450048,3304451071,FR
3304451072,3304452095,AT
3304452096,3304453119,IN
-3304453120,3304455167,RO
+3304453120,3304454143,RO
+3304454144,3304455167,SG
3304455168,3304456191,BR
3304456192,3304521727,ZA
3304521728,3304528895,US
@@ -143920,12 +153035,14 @@
3315138560,3315204095,MA
3315204096,3315269631,ET
3315269632,3315286015,ZA
-3315286016,3315288413,MU
+3315286016,3315286527,MU
+3315286528,3315286783,KE
+3315286784,3315288413,MU
3315288414,3315288414,KE
3315288415,3315289343,MU
3315289344,3315289599,KE
-3315289600,3315292159,MU
-3315292160,3315293183,KE
+3315289600,3315291135,MU
+3315291136,3315293183,KE
3315293184,3315294207,MU
3315294208,3315302399,ZA
3315302400,3315318783,ML
@@ -144053,9 +153170,7 @@
3320312832,3320313855,ZM
3320313856,3320314879,BI
3320314880,3320315903,CD
-3320315904,3320317439,KE
-3320317440,3320317695,NL
-3320317696,3320381439,KE
+3320315904,3320381439,KE
3320381440,3320446975,NA
3320446976,3320451071,SC
3320451072,3320455167,ZA
@@ -144431,8 +153546,8 @@
3322078784,3322078911,US
3322078912,3322079039,CN
3322079040,3322079423,US
-3322079424,3322079551,CN
-3322079552,3322079679,US
+3322079424,3322079615,CN
+3322079616,3322079679,US
3322079680,3322079743,CN
3322079744,3322079871,US
3322079872,3322079935,CN
@@ -144490,7 +153605,9 @@
3322361871,3322361882,CY
3322361883,3322362367,US
3322362368,3322362431,DE
-3322362432,3322609663,US
+3322362432,3322437375,US
+3322437376,3322437631,GB
+3322437632,3322609663,US
3322609664,3322610687,SA
3322610688,3322683391,US
3322683392,3322691583,AR
@@ -144810,7 +153927,9 @@
3323241216,3323241247,CA
3323241248,3323241279,EE
3323241280,3323241311,US
-3323241312,3323241439,CA
+3323241312,3323241351,CA
+3323241352,3323241359,US
+3323241360,3323241439,CA
3323241440,3323241455,US
3323241456,3323241503,CA
3323241504,3323241511,US
@@ -144874,11 +153993,15 @@
3323244096,3323244175,US
3323244176,3323244191,CA
3323244192,3323244207,US
-3323244208,3323244319,CA
+3323244208,3323244223,CA
+3323244224,3323244255,US
+3323244256,3323244319,CA
3323244320,3323244327,US
3323244328,3323244399,CA
3323244400,3323244407,US
-3323244408,3323244511,CA
+3323244408,3323244495,CA
+3323244496,3323244503,US
+3323244504,3323244511,CA
3323244512,3323244671,US
3323244672,3323244687,CA
3323244688,3323244695,US
@@ -144939,9 +154062,7 @@
3323354368,3323355647,DE
3323355648,3323356671,US
3323356672,3323356927,CA
-3323356928,3323359231,US
-3323359232,3323359743,CA
-3323359744,3323378687,US
+3323356928,3323378687,US
3323378688,3323378943,CA
3323378944,3323382783,US
3323382784,3323383295,CA
@@ -144963,8 +154084,8 @@
3323449536,3323449539,GB
3323449540,3323457791,US
3323457792,3323458047,GB
-3323458048,3323462655,US
-3323462656,3323463167,BR
+3323458048,3323462911,US
+3323462912,3323463167,BR
3323463168,3323477983,US
3323477984,3323478015,GB
3323478016,3323505311,US
@@ -144979,7 +154100,9 @@
3323507744,3323507751,CA
3323507752,3323508639,US
3323508640,3323508647,GB
-3323508648,3323510287,US
+3323508648,3323509663,US
+3323509664,3323509671,CA
+3323509672,3323510287,US
3323510288,3323510295,CA
3323510296,3323659263,US
3323659264,3323660543,NZ
@@ -144998,7 +154121,8 @@
3323678160,3323678167,PK
3323678168,3323678195,CA
3323678196,3323678199,VE
-3323678200,3323678463,US
+3323678200,3323678207,MY
+3323678208,3323678463,US
3323678464,3323678519,CA
3323678520,3323678523,BR
3323678524,3323678527,US
@@ -145056,14 +154180,15 @@
3323682992,3323682999,CH
3323683000,3323683003,CA
3323683004,3323683007,SI
-3323683008,3323683039,AU
-3323683040,3323683071,CA
+3323683008,3323683071,CA
3323683072,3323683103,BA
3323683104,3323683123,CA
3323683124,3323683127,BR
3323683128,3323683299,CA
3323683300,3323683303,BR
-3323683304,3323683367,CA
+3323683304,3323683307,CA
+3323683308,3323683311,US
+3323683312,3323683367,CA
3323683368,3323683371,IN
3323683372,3323683399,CA
3323683400,3323683403,BR
@@ -145073,9 +154198,7 @@
3323683448,3323683455,US
3323683456,3323683471,CA
3323683472,3323683479,MX
-3323683480,3323683487,CA
-3323683488,3323683503,US
-3323683504,3323683515,CA
+3323683480,3323683515,CA
3323683516,3323683519,MX
3323683520,3323683523,US
3323683524,3323683527,DE
@@ -145153,8 +154276,7 @@
3323685312,3323685319,CA
3323685320,3323685327,CO
3323685328,3323685343,BR
-3323685344,3323685347,IL
-3323685348,3323685407,CA
+3323685344,3323685407,CA
3323685408,3323685411,MX
3323685412,3323685527,CA
3323685528,3323685535,GB
@@ -145246,7 +154368,9 @@
3323687216,3323687231,US
3323687232,3323687235,CA
3323687236,3323687239,SK
-3323687240,3323687279,CA
+3323687240,3323687255,CA
+3323687256,3323687259,US
+3323687260,3323687279,CA
3323687280,3323687287,US
3323687288,3323687427,CA
3323687428,3323687431,BZ
@@ -145291,7 +154415,9 @@
3323688164,3323688175,BR
3323688176,3323688183,CA
3323688184,3323688187,BR
-3323688188,3323688343,CA
+3323688188,3323688319,CA
+3323688320,3323688335,US
+3323688336,3323688343,CA
3323688344,3323688351,AE
3323688352,3323688463,CA
3323688464,3323688467,BR
@@ -145320,8 +154446,7 @@
3323689072,3323689079,ID
3323689080,3323689175,CA
3323689176,3323689183,US
-3323689184,3323689187,RU
-3323689188,3323689279,CA
+3323689184,3323689279,CA
3323689280,3323689295,US
3323689296,3323689303,IE
3323689304,3323689347,CA
@@ -145484,7 +154609,9 @@
3324678912,3324679167,CA
3324679168,3324681215,US
3324681216,3324681471,CA
-3324681472,3324693503,US
+3324681472,3324684799,US
+3324684800,3324685055,CA
+3324685056,3324693503,US
3324693504,3324693759,CA
3324693760,3324694783,US
3324694784,3324695039,CA
@@ -145871,12 +154998,16 @@
3324956032,3324956159,US
3324956160,3324956223,EE
3324956224,3324956255,IN
-3324956256,3324957759,US
+3324956256,3324956671,US
+3324956672,3324956799,CA
+3324956800,3324957759,US
3324957760,3324957823,EE
3324957824,3324957951,US
3324957952,3324958015,EE
3324958016,3324958079,GB
-3324958080,3324958655,US
+3324958080,3324958463,US
+3324958464,3324958591,CA
+3324958592,3324958655,US
3324958656,3324958719,EE
3324958720,3324963839,US
3324963840,3324963903,NL
@@ -145899,7 +155030,9 @@
3325035520,3325067263,US
3325067264,3325100287,CA
3325100288,3325100543,US
-3325101056,3325120423,US
+3325101056,3325120076,US
+3325120077,3325120081,MX
+3325120082,3325120423,US
3325120424,3325120431,IN
3325120432,3325122559,US
3325122560,3325123071,CA
@@ -145973,7 +155106,9 @@
3325190920,3325190927,US
3325190928,3325191119,CA
3325191120,3325191127,AE
-3325191128,3325191215,CA
+3325191128,3325191143,CA
+3325191144,3325191151,US
+3325191152,3325191215,CA
3325191216,3325191223,US
3325191224,3325191239,CA
3325191240,3325191247,AR
@@ -146076,7 +155211,9 @@
3325192664,3325192671,BR
3325192672,3325192767,CA
3325192768,3325192775,US
-3325192776,3325192935,CA
+3325192776,3325192831,CA
+3325192832,3325192839,US
+3325192840,3325192935,CA
3325192936,3325192943,DE
3325192944,3325192983,CA
3325192984,3325192991,ES
@@ -146137,7 +155274,9 @@
3325193808,3325193815,BZ
3325193816,3325193903,CA
3325193904,3325193911,AU
-3325193912,3325194047,CA
+3325193912,3325194031,CA
+3325194032,3325194039,US
+3325194040,3325194047,CA
3325194048,3325194055,US
3325194056,3325194079,CA
3325194080,3325194087,UM
@@ -146146,7 +155285,9 @@
3325194160,3325194167,US
3325194168,3325194191,CA
3325194192,3325194199,IN
-3325194200,3325194335,CA
+3325194200,3325194311,CA
+3325194312,3325194319,US
+3325194320,3325194335,CA
3325194336,3325194343,US
3325194344,3325194359,CA
3325194360,3325194367,MY
@@ -146473,8 +155614,7 @@
3325200528,3325200531,PA
3325200532,3325200567,CA
3325200568,3325200571,US
-3325200572,3325200575,UA
-3325200576,3325200583,CA
+3325200572,3325200583,CA
3325200584,3325200591,IN
3325200592,3325200595,CA
3325200596,3325200599,BR
@@ -146521,8 +155661,7 @@
3325201532,3325201535,US
3325201536,3325201551,CA
3325201552,3325201559,US
-3325201560,3325201563,IN
-3325201564,3325201587,CA
+3325201560,3325201587,CA
3325201588,3325201591,SI
3325201592,3325201599,PT
3325201600,3325201607,CA
@@ -146584,8 +155723,7 @@
3325206624,3325206624,RO
3325206625,3325206626,CA
3325206627,3325206627,RO
-3325206628,3325206635,CA
-3325206636,3325206639,ES
+3325206628,3325206639,CA
3325206640,3325206671,US
3325206672,3325206679,BR
3325206680,3325206683,LK
@@ -146634,9 +155772,7 @@
3325207700,3325207703,LU
3325207704,3325207735,CA
3325207736,3325207739,CL
-3325207740,3325207775,CA
-3325207776,3325207779,US
-3325207780,3325207791,CA
+3325207740,3325207791,CA
3325207792,3325207795,GB
3325207796,3325207807,CA
3325207808,3325207935,US
@@ -146678,9 +155814,7 @@
3325209000,3325209003,US
3325209004,3325209023,CA
3325209024,3325209055,US
-3325209056,3325209083,CA
-3325209084,3325209087,US
-3325209088,3325209091,CA
+3325209056,3325209091,CA
3325209092,3325209095,AR
3325209096,3325209099,CA
3325209100,3325209103,DM
@@ -146691,9 +155825,9 @@
3325209164,3325209167,GB
3325209168,3325209183,CA
3325209184,3325209215,AR
-3325209216,3325209231,CA
-3325209232,3325209247,DE
-3325209248,3325209327,CA
+3325209216,3325209295,CA
+3325209296,3325209311,US
+3325209312,3325209327,CA
3325209328,3325209343,US
3325209344,3325209379,CA
3325209380,3325209383,CH
@@ -146711,7 +155845,9 @@
3325209544,3325209559,US
3325209560,3325209567,CA
3325209568,3325209575,US
-3325209576,3325209655,CA
+3325209576,3325209579,CA
+3325209580,3325209583,US
+3325209584,3325209655,CA
3325209656,3325209663,CH
3325209664,3325209679,US
3325209680,3325209695,CA
@@ -146830,9 +155966,7 @@
3325212172,3325212175,IN
3325212176,3325212215,CA
3325212216,3325212223,HR
-3325212224,3325212407,CA
-3325212408,3325212411,US
-3325212412,3325212479,CA
+3325212224,3325212479,CA
3325212480,3325212483,NL
3325212484,3325212495,CA
3325212496,3325212511,FR
@@ -146840,9 +155974,7 @@
3325212516,3325212555,CA
3325212556,3325212559,NL
3325212560,3325212575,BR
-3325212576,3325212583,CA
-3325212584,3325212587,HN
-3325212588,3325212591,CA
+3325212576,3325212591,CA
3325212592,3325212595,SI
3325212596,3325212611,CA
3325212612,3325212615,ES
@@ -146855,18 +155987,18 @@
3325212928,3325212943,LK
3325212944,3325212963,CA
3325212964,3325212967,GB
-3325212968,3325213023,CA
-3325213024,3325213055,SE
+3325212968,3325213055,CA
3325213056,3325213071,US
3325213072,3325213087,NZ
3325213088,3325213103,CA
3325213104,3325213111,US
-3325213112,3325213183,CA
-3325213184,3325213191,MD
+3325213112,3325213191,CA
3325213192,3325213199,DE
3325213200,3325213423,CA
3325213424,3325213431,US
-3325213432,3325213447,CA
+3325213432,3325213435,CA
+3325213436,3325213439,US
+3325213440,3325213447,CA
3325213448,3325213451,BD
3325213452,3325213483,CA
3325213484,3325213487,VE
@@ -146947,7 +156079,9 @@
3325215280,3325215295,US
3325215296,3325215299,CA
3325215300,3325215303,IN
-3325215304,3325215335,CA
+3325215304,3325215319,CA
+3325215320,3325215323,IN
+3325215324,3325215335,CA
3325215336,3325215343,US
3325215344,3325215439,CA
3325215440,3325215447,LK
@@ -147089,9 +156223,7 @@
3325218524,3325218527,CA
3325218528,3325218531,BR
3325218532,3325218535,US
-3325218536,3325218591,CA
-3325218592,3325218595,BR
-3325218596,3325218615,CA
+3325218536,3325218615,CA
3325218616,3325218623,BR
3325218624,3325218663,CA
3325218664,3325218667,US
@@ -147169,9 +156301,7 @@
3325220512,3325220519,BR
3325220520,3325220543,CA
3325220544,3325220559,US
-3325220560,3325220591,CA
-3325220592,3325220595,BE
-3325220596,3325220635,CA
+3325220560,3325220635,CA
3325220636,3325220636,US
3325220637,3325220647,CA
3325220648,3325220651,MX
@@ -147185,8 +156315,7 @@
3325220960,3325220967,EC
3325220968,3325220971,CA
3325220972,3325220975,ES
-3325220976,3325221043,CA
-3325221044,3325221047,CL
+3325220976,3325221047,CA
3325221048,3325221051,BR
3325221052,3325221055,CA
3325221056,3325221119,BR
@@ -147204,9 +156333,7 @@
3325221452,3325221455,US
3325221456,3325221467,CA
3325221468,3325221471,BR
-3325221472,3325221503,CA
-3325221504,3325221535,PT
-3325221536,3325221551,CA
+3325221472,3325221551,CA
3325221552,3325221555,PE
3325221556,3325221567,CA
3325221568,3325221575,AU
@@ -147273,8 +156400,7 @@
3325222880,3325222911,BR
3325222912,3325222947,CA
3325222948,3325222951,AE
-3325222952,3325222959,BR
-3325222960,3325222963,CA
+3325222952,3325222963,CA
3325222964,3325222967,VE
3325222968,3325222983,CA
3325222984,3325222987,TW
@@ -147308,9 +156434,7 @@
3325223352,3325223355,MX
3325223356,3325223375,CA
3325223376,3325223391,US
-3325223392,3325223427,CA
-3325223428,3325223431,US
-3325223432,3325223463,CA
+3325223392,3325223463,CA
3325223464,3325223471,US
3325223472,3325223535,CA
3325223536,3325223551,AT
@@ -147322,8 +156446,7 @@
3325223648,3325223663,KN
3325223664,3325223723,CA
3325223724,3325223727,US
-3325223728,3325223791,CA
-3325223792,3325223795,BR
+3325223728,3325223795,CA
3325223796,3325223799,US
3325223800,3325223807,CA
3325223808,3325223811,HK
@@ -147363,13 +156486,10 @@
3325224688,3325224695,US
3325224696,3325224699,CA
3325224700,3325224703,BR
-3325224704,3325224719,US
-3325224720,3325224735,CA
+3325224704,3325224735,US
3325224736,3325224767,LK
3325224768,3325224783,FR
-3325224784,3325224795,CA
-3325224796,3325224799,HR
-3325224800,3325224807,CA
+3325224784,3325224807,CA
3325224808,3325224815,GB
3325224816,3325224823,FR
3325224824,3325224831,CA
@@ -147380,9 +156500,7 @@
3325224872,3325224875,IL
3325224876,3325224879,CA
3325224880,3325224895,US
-3325224896,3325224919,CA
-3325224920,3325224927,US
-3325224928,3325224943,CA
+3325224896,3325224943,CA
3325224944,3325224947,DE
3325224948,3325224951,CA
3325224952,3325224955,GB
@@ -147415,15 +156533,13 @@
3325225672,3325225675,US
3325225676,3325225727,CA
3325225728,3325225731,US
-3325225732,3325225735,GB
+3325225732,3325225735,CA
3325225736,3325225743,US
3325225744,3325225775,CA
3325225776,3325225779,US
3325225780,3325225791,CA
3325225792,3325225795,BR
-3325225796,3325225799,CA
-3325225800,3325225807,IN
-3325225808,3325225819,CA
+3325225796,3325225819,CA
3325225820,3325225823,US
3325225824,3325225899,CA
3325225900,3325225911,CY
@@ -147450,8 +156566,7 @@
3325226096,3325226099,PL
3325226100,3325226159,CA
3325226160,3325226167,FR
-3325226168,3325226179,CA
-3325226180,3325226183,BR
+3325226168,3325226183,CA
3325226184,3325226187,US
3325226188,3325226239,CA
3325226240,3325226255,US
@@ -147491,10 +156606,7 @@
3325227392,3325227395,PK
3325227396,3325227399,CA
3325227400,3325227403,LK
-3325227404,3325227439,CA
-3325227440,3325227443,CH
-3325227444,3325227483,CA
-3325227484,3325227487,IT
+3325227404,3325227487,CA
3325227488,3325227503,RO
3325227504,3325227519,CA
3325227520,3325227527,VG
@@ -147508,13 +156620,13 @@
3325227576,3325227583,US
3325227584,3325227599,CA
3325227600,3325227615,CY
-3325227616,3325227627,CA
+3325227616,3325227619,NL
+3325227620,3325227627,CA
3325227628,3325227631,BZ
3325227632,3325227791,CA
3325227792,3325227799,US
3325227800,3325227803,BR
-3325227804,3325227871,CA
-3325227872,3325227875,BR
+3325227804,3325227875,CA
3325227876,3325227879,US
3325227880,3325228063,CA
3325228064,3325228079,US
@@ -147548,11 +156660,9 @@
3325228932,3325228935,LU
3325228936,3325228991,CA
3325228992,3325229007,BR
-3325229008,3325229023,CA
-3325229024,3325229027,ES
-3325229028,3325229055,CA
+3325229008,3325229055,CA
3325229056,3325229063,US
-3325229064,3325229071,JO
+3325229064,3325229071,CA
3325229072,3325229079,IN
3325229080,3325229083,CA
3325229084,3325229087,US
@@ -147605,9 +156715,7 @@
3325229956,3325229959,US
3325229960,3325229975,CA
3325229976,3325229979,IN
-3325229980,3325229991,CA
-3325229992,3325229999,IN
-3325230000,3325230047,CA
+3325229980,3325230047,CA
3325230048,3325230055,AE
3325230056,3325230079,CA
3325230080,3325230095,US
@@ -147617,9 +156725,7 @@
3325230124,3325230127,CL
3325230128,3325230135,CA
3325230136,3325230143,FR
-3325230144,3325230167,CA
-3325230168,3325230171,PK
-3325230172,3325230319,CA
+3325230144,3325230319,CA
3325230320,3325230323,US
3325230324,3325230451,CA
3325230452,3325230455,US
@@ -147829,7 +156935,11 @@
3326623744,3326631935,US
3326631936,3326632239,CA
3326632240,3326632247,RO
-3326632248,3326632519,CA
+3326632248,3326632271,CA
+3326632272,3326632279,US
+3326632280,3326632375,CA
+3326632376,3326632383,US
+3326632384,3326632519,CA
3326632520,3326632527,US
3326632528,3326634447,CA
3326634448,3326634463,CR
@@ -147880,7 +156990,9 @@
3327426560,3327459327,CA
3327459328,3327723519,US
3327723520,3327725311,CA
-3327725312,3327751679,US
+3327725312,3327743999,US
+3327744000,3327746047,KZ
+3327746048,3327751679,US
3327751680,3327751935,DE
3327751936,3327752191,CA
3327752192,3327788543,US
@@ -147927,9 +157039,7 @@
3328358400,3328360447,CA
3328360448,3328383999,US
3328384000,3328385023,CA
-3328385024,3328394239,US
-3328394240,3328394495,GB
-3328394496,3328414719,US
+3328385024,3328414719,US
3328414720,3328414975,CH
3328414976,3328420351,US
3328420352,3328420607,CA
@@ -148129,7 +157239,9 @@
3330664192,3330664447,CA
3330664448,3330677759,US
3330677760,3330678783,CA
-3330678784,3330714367,US
+3330678784,3330684927,US
+3330684928,3330685183,IN
+3330685184,3330714367,US
3330714368,3330714623,CA
3330714624,3330726655,US
3330726656,3330726911,CA
@@ -148157,7 +157269,8 @@
3330815744,3330815999,IN
3330816000,3330816767,US
3330816768,3330817023,BR
-3330817024,3330817887,US
+3330817024,3330817882,US
+3330817883,3330817887,CL
3330817888,3330817899,ES
3330817900,3330866943,US
3330866944,3330867199,CA
@@ -148172,7 +157285,8 @@
3330893568,3330893823,NL
3330893824,3330894079,CA
3330894080,3330894591,GB
-3330894592,3330898431,US
+3330894592,3330898175,US
+3330898176,3330898431,DE
3330898432,3330898943,FR
3330898944,3330904575,US
3330904576,3330904831,CA
@@ -148199,11 +157313,11 @@
3331139328,3331139839,US
3331139840,3331140095,CZ
3331140096,3331140351,US
-3331140352,3331141119,CZ
-3331141120,3331141375,US
-3331141376,3331142143,CZ
-3331142144,3331142911,US
-3331142912,3331147007,CZ
+3331140352,3331140863,CZ
+3331140864,3331141887,US
+3331141888,3331142143,CZ
+3331142144,3331143167,US
+3331143168,3331147007,CZ
3331147008,3331147263,US
3331147264,3331147519,CZ
3331147520,3331147775,US
@@ -148230,8 +157344,8 @@
3331159040,3331161855,CZ
3331161856,3331162111,US
3331162112,3331162367,CZ
-3331162368,3331162623,US
-3331162624,3331164415,CZ
+3331162368,3331162879,US
+3331162880,3331164415,CZ
3331164416,3331164671,US
3331164672,3331165695,CZ
3331165696,3331165951,US
@@ -148261,7 +157375,9 @@
3331179008,3331179775,US
3331179776,3331180031,CZ
3331180032,3331180543,US
-3331180544,3331181823,CZ
+3331180544,3331181055,CZ
+3331181056,3331181311,US
+3331181312,3331181823,CZ
3331181824,3331182079,US
3331182080,3331183615,CZ
3331183616,3331183871,US
@@ -148328,8 +157444,8 @@
3331524096,3331524607,SG
3331524608,3331526399,US
3331526400,3331526655,FR
-3331526656,3331527167,US
-3331527168,3331527679,GB
+3331526656,3331527423,US
+3331527424,3331527679,GB
3331527680,3331529023,US
3331529024,3331529031,IN
3331529032,3331530215,US
@@ -148405,8 +157521,8 @@
3332473856,3332477951,US
3332477952,3332482303,CA
3332482304,3332483071,US
-3332483072,3332483327,CO
-3332483328,3332484095,US
+3332483072,3332483583,CO
+3332483584,3332484095,US
3332484096,3332491263,CA
3332491264,3332492031,US
3332492032,3332500735,CA
@@ -148417,7 +157533,9 @@
3332503040,3332503551,US
3332503552,3332505343,CA
3332505344,3332505855,US
-3332505856,3332525311,CA
+3332505856,3332508671,CA
+3332508672,3332508927,US
+3332508928,3332525311,CA
3332525312,3332525574,US
3332525575,3332525575,CA
3332525576,3332526079,US
@@ -148539,7 +157657,9 @@
3333503040,3333503103,CN
3333503104,3333503247,US
3333503248,3333503255,CN
-3333503256,3333504255,US
+3333503256,3333503551,US
+3333503552,3333503615,CN
+3333503616,3333504255,US
3333504256,3333504263,CN
3333504264,3333504319,US
3333504320,3333504383,CN
@@ -148551,11 +157671,13 @@
3333583872,3333584895,CA
3333584896,3333593855,US
3333593856,3333594111,CA
-3333594112,3333609983,US
+3333594112,3333603327,US
+3333603328,3333603328,GB
+3333603329,3333603329,US
+3333603330,3333603583,GB
+3333603584,3333609983,US
3333609984,3333610239,SG
-3333610240,3333614591,US
-3333614592,3333614847,GB
-3333614848,3333621503,US
+3333610240,3333621503,US
3333621504,3333621759,CA
3333621760,3333624319,US
3333624320,3333624575,CA
@@ -148588,9 +157710,7 @@
3333829632,3333830143,IN
3333830144,3333859839,US
3333859840,3333860095,BM
-3333860096,3333871103,US
-3333871104,3333871359,CA
-3333871360,3333939455,US
+3333860096,3333939455,US
3333939456,3333939711,CA
3333939712,3333947391,US
3333947392,3333949439,IN
@@ -148627,8 +157747,8 @@
3335005120,3335005183,US
3335005184,3335005247,CN
3335005248,3335005663,US
-3335005664,3335005695,CN
-3335005696,3335006015,US
+3335005664,3335005759,CN
+3335005760,3335006015,US
3335006016,3335006079,CN
3335006080,3335006143,US
3335006144,3335006207,CN
@@ -148645,12 +157765,12 @@
3335008928,3335009023,US
3335009024,3335009039,CN
3335009040,3335009055,US
-3335009056,3335009167,CN
-3335009168,3335009183,US
+3335009056,3335009175,CN
+3335009176,3335009183,US
3335009184,3335009215,CN
3335009216,3335009279,US
-3335009280,3335009407,CN
-3335009408,3335009599,US
+3335009280,3335009471,CN
+3335009472,3335009599,US
3335009600,3335009663,CN
3335009664,3335010239,US
3335010240,3335010303,CN
@@ -148686,12 +157806,13 @@
3335458816,3335460863,BM
3335460864,3335475199,US
3335475200,3335475455,DE
-3335475456,3335526399,US
-3335526400,3335526911,BR
+3335475456,3335526911,US
3335526912,3335527235,DE
3335527236,3335527237,US
3335527238,3335527423,DE
-3335527424,3335559680,US
+3335527424,3335546879,US
+3335546880,3335548927,KR
+3335548928,3335559680,US
3335559681,3335559935,IE
3335559936,3335564151,US
3335564152,3335564155,TH
@@ -148734,9 +157855,7 @@
3337107200,3337107455,AU
3337107456,3337107711,JP
3337107712,3337107967,GB
-3337107968,3337198335,US
-3337198336,3337198591,CA
-3337198592,3337198703,US
+3337107968,3337198703,US
3337198704,3337198707,CA
3337198708,3337201727,US
3337201728,3337201735,CA
@@ -148746,11 +157865,9 @@
3337201792,3337201807,CA
3337201808,3337209375,US
3337209376,3337209383,CA
-3337209384,3337217791,US
-3337217792,3337218047,CA
-3337218048,3337289983,US
-3337289984,3337293567,CA
-3337293568,3337293823,US
+3337209384,3337289983,US
+3337289984,3337293311,CA
+3337293312,3337293823,US
3337293824,3337297919,CA
3337297920,3337302015,US
3337302016,3337303551,CA
@@ -148766,7 +157883,8 @@
3337342464,3337355007,CA
3337355008,3337650175,US
3337650176,3337650687,GB
-3337650688,3337651199,US
+3337650688,3337650943,US
+3337650944,3337651199,HK
3337651200,3337652223,SG
3337652224,3337652991,CH
3337652992,3337653247,GB
@@ -148774,7 +157892,11 @@
3337653504,3337653759,JP
3337653760,3337654015,CH
3337654016,3337654271,HK
-3337654272,3337656319,AU
+3337654272,3337654527,SG
+3337654528,3337654783,CH
+3337654784,3337655039,AU
+3337655040,3337656063,CH
+3337656064,3337656319,US
3337656320,3337682943,CH
3337682944,3337736959,US
3337736960,3337737215,SG
@@ -148818,7 +157940,8 @@
3337962240,3337962319,US
3337962320,3337962335,CA
3337962336,3337962431,US
-3337962432,3337962511,CA
+3337962432,3337962495,GB
+3337962496,3337962511,CA
3337962512,3337962519,US
3337962520,3337962527,CN
3337962528,3337962607,CA
@@ -148837,7 +157960,8 @@
3337963040,3337963071,CA
3337963072,3337963167,US
3337963168,3337963271,DE
-3337963272,3337963295,CA
+3337963272,3337963279,US
+3337963280,3337963295,CA
3337963296,3337963311,US
3337963312,3337963335,CA
3337963336,3337963343,CN
@@ -148847,8 +157971,8 @@
3337963392,3337963399,US
3337963400,3337963407,CN
3337963408,3337963423,CA
-3337963424,3337963431,US
-3337963432,3337963447,CA
+3337963424,3337963439,US
+3337963440,3337963447,CA
3337963448,3337963455,US
3337963456,3337963487,GB
3337963488,3337963495,US
@@ -148862,7 +157986,9 @@
3337963648,3337963679,US
3337963680,3337963711,CA
3337963712,3337963743,US
-3337963744,3337963871,CA
+3337963744,3337963759,CA
+3337963760,3337963767,US
+3337963768,3337963871,CA
3337963872,3337963879,US
3337963880,3337963903,CA
3337963904,3337963911,MA
@@ -148917,21 +158043,23 @@
3338235648,3338235903,CA
3338235904,3338241535,US
3338241536,3338242047,CA
-3338242048,3338246655,US
+3338242048,3338246143,US
+3338246144,3338246399,CA
+3338246400,3338246655,US
3338246656,3338247167,CA
3338247168,3338247423,US
3338247424,3338247679,CA
3338247680,3338247935,US
-3338247936,3338248703,CA
-3338248704,3338248959,US
-3338248960,3338249215,CA
+3338247936,3338249215,CA
3338249216,3338249727,US
3338249728,3338249983,CA
3338249984,3338250751,US
3338250752,3338251007,CA
3338251008,3338252543,US
3338252544,3338252799,CA
-3338252800,3338255615,US
+3338252800,3338254079,US
+3338254080,3338254335,CA
+3338254336,3338255615,US
3338255616,3338255871,CA
3338255872,3338257407,US
3338257408,3338257663,CA
@@ -149043,7 +158171,9 @@
3339179008,3339180031,US
3339180032,3339181055,CA
3339181056,3339184127,US
-3339184128,3339186175,CA
+3339184128,3339185839,CA
+3339185840,3339185843,US
+3339185844,3339186175,CA
3339186176,3339261951,US
3339261952,3339263999,HK
3339264000,3339270399,US
@@ -149089,9 +158219,13 @@
3339760640,3339761663,CA
3339761664,3339766183,US
3339766184,3339766191,AU
-3339766192,3339766903,US
+3339766192,3339766671,US
+3339766672,3339766679,CA
+3339766680,3339766903,US
3339766904,3339766911,NZ
-3339766912,3339778047,US
+3339766912,3339767111,US
+3339767112,3339767119,GB
+3339767120,3339778047,US
3339778048,3339779071,BM
3339779072,3339926015,US
3339926528,3339927551,CA
@@ -149110,8 +158244,8 @@
3339968512,3339974911,US
3339974912,3339975167,GB
3339975168,3339975935,US
-3339975936,3339976703,CA
-3339976704,3340080127,US
+3339975936,3339976191,CA
+3339976192,3340080127,US
3340080128,3340081151,CA
3340081152,3340084223,US
3340084224,3340085247,KN
@@ -149189,7 +158323,11 @@
3340926152,3340926159,CN
3340926160,3340926167,US
3340926168,3340926175,AR
-3340926176,3341057023,US
+3340926176,3340926223,US
+3340926224,3340926231,CA
+3340926232,3340926503,US
+3340926504,3340926511,MX
+3340926512,3341057023,US
3341057024,3341058047,CA
3341058048,3341180927,US
3341180928,3341182975,CA
@@ -149249,15 +158387,17 @@
3341547520,3341549311,CA
3341549312,3341631999,US
3341632000,3341632511,CA
-3341632512,3341643519,US
+3341632512,3341634815,US
+3341634816,3341635071,CA
+3341635072,3341643519,US
3341643520,3341643775,CA
3341643776,3341645055,US
3341645056,3341645311,CA
-3341645312,3341709311,US
+3341645312,3341646079,US
+3341646080,3341646335,CA
+3341646336,3341709311,US
3341709312,3341710335,CA
-3341710336,3341727743,US
-3341727744,3341728767,AU
-3341728768,3341758463,US
+3341710336,3341758463,US
3341758464,3341759487,CA
3341759488,3341760511,BB
3341760512,3341762559,CA
@@ -149272,9 +158412,7 @@
3341796864,3341797375,JP
3341797376,3341807615,US
3341807616,3341807706,CA
-3341807707,3341807731,US
-3341807732,3341807756,CA
-3341807757,3341807781,US
+3341807707,3341807781,US
3341807782,3341807807,CA
3341807808,3341807815,US
3341807816,3341807822,CA
@@ -149289,7 +158427,9 @@
3341827328,3341828095,US
3341828096,3341829119,CA
3341829120,3341837311,US
-3341837312,3341838335,CA
+3341837312,3341837743,CA
+3341837744,3341837747,US
+3341837748,3341838335,CA
3341838336,3341838591,GB
3341838592,3341854719,US
3341854720,3341854975,CA
@@ -149335,9 +158475,11 @@
3342489302,3342489311,AR
3342489312,3342489450,US
3342489451,3342489463,IL
-3342489464,3342496767,US
+3342489464,3342489503,US
+3342489504,3342489567,GB
+3342489568,3342496767,US
3342496768,3342497791,CA
-3342499840,3342505983,US
+3342497792,3342505983,US
3342505984,3342507007,BB
3342507008,3342510079,US
3342510080,3342512127,CA
@@ -149389,15 +158531,19 @@
3342974976,3342977023,CN
3342977024,3343013887,US
3343013888,3343015695,CA
-3343015696,3343015711,US
-3343015712,3343015935,CA
+3343015696,3343015727,US
+3343015728,3343015935,CA
3343015936,3343020031,US
3343020032,3343021055,CA
3343021056,3343046959,US
3343046960,3343046963,BE
3343046964,3343055871,US
3343055872,3343056895,CA
-3343056896,3343153151,US
+3343056896,3343108095,US
+3343108096,3343108863,GB
+3343108864,3343109119,US
+3343109120,3343110143,GB
+3343110144,3343153151,US
3343153152,3343153167,CA
3343153168,3343153175,US
3343153176,3343154943,CA
@@ -149438,7 +158584,9 @@
3343378920,3343378927,NL
3343378928,3343378959,US
3343378960,3343378967,RU
-3343378968,3343379079,US
+3343378968,3343379039,US
+3343379040,3343379071,GB
+3343379072,3343379079,US
3343379080,3343379087,SE
3343379088,3343379143,US
3343379144,3343379151,GB
@@ -149463,16 +158611,14 @@
3343653552,3343653631,US
3343653632,3343653695,CA
3343653696,3343656447,US
-3343656448,3343656959,VI
-3343656960,3343746047,US
-3343746048,3343746303,VI
-3343746304,3343746431,US
-3343746432,3343747071,VI
+3343656448,3343656703,VI
+3343656704,3343746047,US
+3343746048,3343747071,VI
3343747072,3343763903,US
3343763904,3343763935,CA
-3343763936,3343764479,US
-3343764480,3343765503,VI
-3343765504,3343858687,US
+3343763936,3343764863,US
+3343764864,3343764991,VI
+3343764992,3343858687,US
3343858688,3343859199,VG
3343859200,3343923135,US
3343923136,3343923199,HK
@@ -149559,8 +158705,8 @@
3344674208,3344674223,GB
3344674224,3344676863,US
3344676864,3344677247,CA
-3344677248,3344677311,US
-3344677312,3344677407,CA
+3344677248,3344677375,US
+3344677376,3344677407,CA
3344677408,3344677423,US
3344677424,3344678911,CA
3344678912,3344680959,PA
@@ -149602,7 +158748,8 @@
3345332304,3345332495,US
3345332496,3345332503,CA
3345332504,3345332511,CN
-3345332512,3345332607,US
+3345332512,3345332519,UA
+3345332520,3345332607,US
3345332608,3345332639,GT
3345332640,3345332659,US
3345332660,3345332663,VN
@@ -149633,13 +158780,21 @@
3345398784,3345399807,BS
3345399808,3345401855,PR
3345401856,3345403903,CA
-3345403904,3345408496,US
+3345403904,3345408092,US
+3345408093,3345408094,GB
+3345408095,3345408390,US
+3345408391,3345408394,GB
+3345408395,3345408496,US
3345408497,3345408497,GB
3345408498,3345408534,US
3345408535,3345408538,AU
3345408539,3345408581,US
3345408582,3345408585,GB
-3345408586,3345409175,US
+3345408586,3345408634,US
+3345408635,3345408639,CA
+3345408640,3345409085,US
+3345409086,3345409089,CA
+3345409090,3345409175,US
3345409176,3345409179,CN
3345409180,3345409558,US
3345409559,3345409562,CA
@@ -149691,9 +158846,7 @@
3345447680,3345447935,BE
3345447936,3345448447,FR
3345448448,3345448959,BE
-3345448960,3345666631,US
-3345666632,3345666639,NO
-3345666640,3346196479,US
+3345448960,3346196479,US
3346196480,3346197503,CA
3346197504,3346198527,US
3346198528,3346200575,CA
@@ -149709,7 +158862,9 @@
3346221904,3346221911,IT
3346221912,3346225151,US
3346225152,3346227199,CA
-3346227200,3346232831,US
+3346227200,3346232460,US
+3346232461,3346232468,AR
+3346232469,3346232831,US
3346232832,3346232895,GB
3346232896,3346233279,US
3346233280,3346233311,GB
@@ -149767,7 +158922,9 @@
3346899712,3346899967,CA
3346899968,3346923519,US
3346923520,3346989055,CA
-3346989056,3347013631,US
+3346989056,3347000319,US
+3347000320,3347001343,CA
+3347001344,3347013631,US
3347013632,3347014399,CA
3347014400,3347014655,US
3347014656,3347015295,CA
@@ -149783,9 +158940,7 @@
3347030784,3347033087,US
3347033088,3347034111,CA
3347034112,3347039231,US
-3347039232,3347039999,DM
-3347040000,3347040127,GD
-3347040128,3347040255,LC
+3347039232,3347040255,DM
3347040256,3347049471,US
3347049472,3347050495,GU
3347050496,3349341695,US
@@ -149841,7 +158996,9 @@
3349723176,3349723183,LK
3349723184,3349723360,US
3349723361,3349723367,CA
-3349723368,3349724191,US
+3349723368,3349723996,US
+3349723997,3349724000,LK
+3349724001,3349724191,US
3349724192,3349724199,AF
3349724200,3349724415,US
3349724416,3349724447,AE
@@ -149895,7 +159052,9 @@
3350503104,3350503135,PH
3350503136,3350505471,US
3350505472,3350507519,CA
-3350507520,3350548735,US
+3350507520,3350518895,US
+3350518896,3350518899,CA
+3350518900,3350548735,US
3350548736,3350548991,CA
3350548992,3350574591,US
3350574848,3350575103,CA
@@ -149925,8 +159084,8 @@
3350790400,3350814975,CA
3350814976,3350815231,US
3350815232,3350815743,CA
-3350815744,3350816767,US
-3350816768,3350823423,CA
+3350815744,3350818303,US
+3350818304,3350823423,CA
3350823424,3350823935,US
3350823936,3350825727,CA
3350825728,3350825983,GB
@@ -149977,7 +159136,9 @@
3351043072,3351043327,CA
3351043328,3351043583,FR
3351043584,3351044095,CA
-3351044096,3351058943,US
+3351044096,3351052287,US
+3351052288,3351053311,CA
+3351053312,3351058943,US
3351058944,3351059455,CA
3351059456,3351071743,US
3351071744,3351072767,CA
@@ -150009,8 +159170,8 @@
3351113728,3351129087,US
3351129088,3351129343,HK
3351129344,3351194111,US
-3351194112,3351194367,FR
-3351194368,3351196159,US
+3351194112,3351194623,FR
+3351194624,3351196159,US
3351196160,3351196671,VG
3351196672,3351197751,US
3351197752,3351197759,PT
@@ -150018,11 +159179,16 @@
3351197796,3351197799,CN
3351197800,3351197831,US
3351197832,3351197839,LK
-3351197840,3351198231,US
+3351197840,3351198139,US
+3351198140,3351198143,IN
+3351198144,3351198223,US
+3351198224,3351198231,PK
3351198232,3351198235,CA
3351198236,3351198239,US
3351198240,3351198247,TR
-3351198248,3351198359,US
+3351198248,3351198303,US
+3351198304,3351198335,PK
+3351198336,3351198359,US
3351198360,3351198363,GB
3351198364,3351198403,US
3351198404,3351198407,IN
@@ -150061,7 +159227,9 @@
3351329280,3351329535,CA
3351329536,3351336959,US
3351336960,3351339007,CA
-3351339008,3351353631,US
+3351339008,3351344083,US
+3351344084,3351344086,SO
+3351344087,3351353631,US
3351353632,3351353663,TR
3351353664,3351353823,US
3351353824,3351353839,BR
@@ -150077,7 +159245,9 @@
3351380992,3351381759,CA
3351381760,3351385343,US
3351385344,3351385599,CA
-3351385600,3351387135,US
+3351385600,3351386623,US
+3351386624,3351386879,CA
+3351386880,3351387135,US
3351387136,3351387391,CA
3351387392,3351389183,US
3351389184,3351389439,CA
@@ -150091,7 +159261,9 @@
3351398400,3351398655,CA
3351398656,3351399423,US
3351399424,3351399679,CA
-3351399680,3351402751,US
+3351399680,3351401983,US
+3351401984,3351402239,CA
+3351402240,3351402751,US
3351402752,3351403263,CA
3351403264,3351404031,US
3351404032,3351404287,CA
@@ -150117,7 +159289,9 @@
3351437568,3351437823,CA
3351437824,3351438079,US
3351438080,3351438335,CA
-3351438336,3351474687,US
+3351438336,3351438591,US
+3351438592,3351438847,CA
+3351438848,3351474687,US
3351474688,3351475199,CA
3351475200,3351483391,US
3351483392,3351484415,CA
@@ -150153,7 +159327,7 @@
3351698432,3351854847,US
3351854848,3351855103,SG
3351855104,3351855615,US
-3351855616,3351855871,GB
+3351855616,3351855871,IE
3351855872,3351860223,US
3351860224,3351861247,KY
3351861248,3351869439,US
@@ -150162,8 +159336,8 @@
3351895552,3351895807,CA
3351895808,3351904255,US
3351904256,3351912447,CA
-3351912448,3351914495,US
-3351914496,3351914751,CA
+3351912448,3351914239,US
+3351914240,3351914751,CA
3351914752,3351915263,US
3351915264,3351915519,CA
3351915520,3351915775,US
@@ -150172,8 +159346,8 @@
3351916544,3351916799,CA
3351916800,3351917055,US
3351917056,3351917311,CA
-3351917312,3351919103,US
-3351919104,3351919615,CA
+3351917312,3351918847,US
+3351918848,3351919615,CA
3351919616,3351920383,US
3351920384,3351933439,CA
3351933440,3351939071,US
@@ -150181,7 +159355,9 @@
3351963648,3351969791,US
3351969792,3351970047,IL
3351970048,3351970815,US
-3351970816,3351987199,IL
+3351970816,3351978751,IL
+3351978752,3351979007,DE
+3351979008,3351987199,IL
3351987200,3351987455,US
3351987456,3351996671,IL
3351996672,3351996927,US
@@ -150223,7 +159399,9 @@
3352591616,3352615423,CA
3352615424,3352616959,US
3352616960,3352887295,CA
-3352887296,3352918015,US
+3352887296,3352916561,US
+3352916562,3352916562,GB
+3352916563,3352918015,US
3352918016,3352919039,CA
3352919040,3353335303,US
3353335304,3353335307,NL
@@ -150249,7 +159427,13 @@
3353335675,3353335676,NL
3353335677,3353335712,US
3353335713,3353335714,NL
-3353335715,3353335782,US
+3353335715,3353335718,US
+3353335719,3353335720,NL
+3353335721,3353335728,US
+3353335729,3353335730,NL
+3353335731,3353335732,US
+3353335733,3353335737,NL
+3353335738,3353335782,US
3353335783,3353335789,NL
3353335790,3353653503,US
3353653504,3353653759,GB
@@ -150332,11 +159516,13 @@
3354507272,3354507279,ID
3354507280,3354507291,US
3354507292,3354507295,MX
-3354507296,3354507391,US
-3354507392,3354507399,IN
-3354507400,3354507451,US
+3354507296,3354507327,US
+3354507328,3354507335,BR
+3354507336,3354507451,US
3354507452,3354507455,ID
-3354507456,3354507511,US
+3354507456,3354507479,US
+3354507480,3354507487,CN
+3354507488,3354507511,US
3354507512,3354507519,MA
3354507520,3354507615,US
3354507616,3354507623,IN
@@ -150351,7 +159537,8 @@
3354507904,3354507907,BZ
3354507908,3354507915,US
3354507916,3354507919,FR
-3354507920,3354507967,US
+3354507920,3354507927,UA
+3354507928,3354507967,US
3354507968,3354507983,MX
3354507984,3354507991,AE
3354507992,3354508015,US
@@ -150372,11 +159559,7 @@
3354508456,3354508463,VN
3354508464,3354508487,US
3354508488,3354508491,VN
-3354508492,3354508527,US
-3354508528,3354508535,AE
-3354508536,3354508583,US
-3354508584,3354508591,PH
-3354508592,3354508639,US
+3354508492,3354508639,US
3354508640,3354508671,PK
3354508672,3354508743,US
3354508744,3354508751,BD
@@ -150453,9 +159636,14 @@
3355249152,3355249663,CA
3355249664,3355308287,US
3355308288,3355308543,GB
-3355308544,3355309567,US
+3355308544,3355308545,AU
+3355308546,3355308547,US
+3355308548,3355308799,AU
+3355308800,3355309567,US
3355309568,3355309823,GB
-3355309824,3355310591,US
+3355309824,3355309827,US
+3355309828,3355310079,AU
+3355310080,3355310591,US
3355310592,3355311103,CA
3355311104,3355338751,US
3355338752,3355340799,BB
@@ -150474,13 +159662,14 @@
3355407360,3355408383,PR
3355408384,3355412863,US
3355412864,3355412927,BD
-3355412928,3355418071,US
+3355412928,3355412959,BR
+3355412960,3355418071,US
3355418072,3355418079,IL
3355418080,3355418111,CN
3355418112,3355418399,US
3355418400,3355418431,BE
3355418432,3355418447,US
-3355418448,3355418455,GB
+3355418448,3355418455,BD
3355418456,3355432959,US
3355432960,3355435007,CA
3355435008,3355443199,US
@@ -150495,7 +159684,8 @@
3355449344,3355450367,CU
3355450368,3355451391,EC
3355451392,3355458559,BR
-3355458560,3355459071,HN
+3355458560,3355458815,HN
+3355458816,3355459071,US
3355459072,3355459327,BR
3355459328,3355459583,EC
3355459840,3355460095,VE
@@ -150958,8 +160148,8 @@
3356390656,3356391167,CL
3356391168,3356391423,PA
3356393472,3356413183,CL
-3356413184,3356413311,CO
-3356413312,3356413567,CL
+3356413184,3356413439,CO
+3356413440,3356413567,CL
3356413568,3356413823,CO
3356413824,3356419839,CL
3356419840,3356420095,CO
@@ -151054,7 +160244,7 @@
3357407232,3357409279,AR
3357409280,3357411327,BR
3357411328,3357412351,VE
-3357412352,3357412863,PE
+3357412352,3357412863,US
3357412864,3357413119,CA
3357413120,3357414399,US
3357414400,3357415423,PR
@@ -151065,12 +160255,9 @@
3357418496,3357419007,US
3357419008,3357419519,GT
3357419520,3357420031,SZ
-3357420032,3357421055,CO
-3357421056,3357421567,US
+3357420032,3357421567,US
3357421568,3357422847,NI
-3357422848,3357423615,US
-3357423616,3357424639,VE
-3357424640,3357425663,US
+3357422848,3357425663,US
3357425664,3357442047,CO
3357442048,3357442303,NI
3357442304,3357442335,GT
@@ -151086,8 +160273,8 @@
3357444608,3357449007,GT
3357449008,3357449015,HN
3357449016,3357449215,GT
-3357449216,3357449727,HN
-3357449728,3357450751,GT
+3357449216,3357449471,HN
+3357449472,3357450751,GT
3357450752,3357451007,SV
3357451008,3357451167,GT
3357451168,3357451175,HN
@@ -151101,8 +160288,7 @@
3357453312,3357453567,HN
3357453568,3357454591,GT
3357454592,3357454847,NI
-3357454848,3357457407,GT
-3357457408,3357457919,CR
+3357454848,3357457919,GT
3357457920,3357458431,HN
3357458432,3357474815,CL
3357474816,3357475071,US
@@ -151133,7 +160319,9 @@
3357507584,3357515775,VE
3357515776,3357523967,SV
3357523968,3357532159,CO
-3357532160,3357556991,AR
+3357532160,3357556959,AR
+3357556960,3357556967,VE
+3357556968,3357556991,AR
3357556992,3357557247,MX
3357557248,3357557759,AR
3357557760,3357559295,EC
@@ -151141,7 +160329,11 @@
3357560320,3357560575,MX
3357560576,3357561199,AR
3357561200,3357561343,CO
-3357561344,3357581311,AR
+3357561344,3357572431,AR
+3357572432,3357572439,UY
+3357572440,3357572471,AR
+3357572472,3357572479,UY
+3357572480,3357581311,AR
3357581312,3357589503,CL
3357589504,3357605887,BZ
3357605888,3357606911,MX
@@ -151205,7 +160397,9 @@
3357783936,3357784063,NI
3357784064,3357785535,GT
3357785536,3357785567,SV
-3357785568,3357785855,GT
+3357785568,3357785807,GT
+3357785808,3357785815,SV
+3357785816,3357785855,GT
3357785856,3357785983,NI
3357785984,3357786111,GT
3357786112,3357802495,VE
@@ -151217,9 +160411,7 @@
3358064640,3358130175,UY
3358130176,3358131199,EC
3358131200,3358132223,CO
-3358132224,3358132735,AR
-3358132736,3358133247,EC
-3358133248,3358133631,AR
+3358132224,3358133631,AR
3358133632,3358133759,VE
3358133760,3358142719,AR
3358142720,3358142975,US
@@ -151235,11 +160427,9 @@
3358144512,3358144639,AR
3358144640,3358144767,VE
3358144768,3358149631,AR
-3358149632,3358150015,CO
-3358150016,3358150271,AR
-3358150272,3358150399,CO
-3358150400,3358150623,AR
-3358150624,3358150655,CO
+3358149632,3358150143,CO
+3358150144,3358150351,AR
+3358150352,3358150655,CO
3358150656,3358151039,AR
3358151040,3358151167,EC
3358151168,3358152319,AR
@@ -151285,8 +160475,8 @@
3358548224,3358548479,VE
3358548480,3358549759,AR
3358549760,3358550015,VE
-3358550016,3358553599,AR
-3358553600,3358553855,VE
+3358550016,3358553087,AR
+3358553088,3358553855,VE
3358553856,3358563327,AR
3358563328,3358564095,CO
3358564096,3358567423,AR
@@ -151443,11 +160633,11 @@
3360765952,3360767999,CO
3360768000,3360781551,AR
3360781552,3360781555,VE
-3360781556,3360781599,AR
-3360781600,3360781615,BS
-3360781616,3360782079,AR
+3360781556,3360782079,AR
3360782080,3360782087,VE
-3360782088,3360788479,AR
+3360782088,3360782319,AR
+3360782320,3360782327,GT
+3360782328,3360788479,AR
3360788480,3360790527,CL
3360790528,3360849919,AR
3360849920,3360882687,VE
@@ -151565,7 +160755,9 @@
3362553008,3362553855,AR
3362553856,3362557951,PY
3362557952,3362562047,AR
-3362570240,3362586623,UY
+3362570240,3362578431,UY
+3362578432,3362580479,AR
+3362580480,3362586623,UY
3362586624,3362652159,VE
3362652160,3362664447,PE
3362664448,3362668543,BO
@@ -151638,10 +160830,44 @@
3363471360,3363487743,CR
3363487744,3363504127,CO
3363504128,3363512319,PE
-3363512320,3363553919,AR
-3363553920,3363554303,US
+3363512320,3363553851,AR
+3363553852,3363553852,CL
+3363553853,3363553853,AR
+3363553854,3363553861,CL
+3363553862,3363553919,AR
+3363553920,3363554075,US
+3363554076,3363554078,AR
+3363554079,3363554139,US
+3363554140,3363554143,AR
+3363554144,3363554147,US
+3363554148,3363554151,AR
+3363554152,3363554163,US
+3363554164,3363554165,AR
+3363554166,3363554166,US
+3363554167,3363554167,AR
+3363554168,3363554277,US
+3363554278,3363554279,AR
+3363554280,3363554283,US
+3363554284,3363554287,AR
+3363554288,3363554291,US
+3363554292,3363554295,AR
+3363554296,3363554303,US
3363554304,3363555583,AR
-3363555584,3363555839,US
+3363555584,3363555795,US
+3363555796,3363555798,AR
+3363555799,3363555799,US
+3363555800,3363555803,AR
+3363555804,3363555804,US
+3363555805,3363555805,AR
+3363555806,3363555806,US
+3363555807,3363555811,AR
+3363555812,3363555812,US
+3363555813,3363555813,AR
+3363555814,3363555814,US
+3363555815,3363555818,AR
+3363555819,3363555819,US
+3363555820,3363555825,AR
+3363555826,3363555839,US
3363555840,3363557375,AR
3363557376,3363559423,BZ
3363559424,3363561471,AR
@@ -151784,9 +161010,7 @@
3381387264,3381448703,MX
3381448704,3381452799,BR
3381452800,3381453823,AR
-3381453824,3381456383,BR
-3381456384,3381456895,US
-3381456896,3381460991,BR
+3381453824,3381460991,BR
3381460992,3381944319,MX
3381944320,3381946367,BR
3381946368,3381947391,CL
@@ -151862,13 +161086,22 @@
3382704128,3382706175,BR
3382706176,3382853631,MX
3382853632,3382870015,BR
-3382870016,3383695871,MX
-3383695872,3383696127,CO
-3383696128,3383701503,MX
+3382870016,3383626307,MX
+3383626308,3383626311,US
+3383626312,3383626315,MX
+3383626316,3383626319,US
+3383626320,3383626323,MX
+3383626324,3383626327,US
+3383626328,3383626331,MX
+3383626332,3383626335,US
+3383626336,3383626339,MX
+3383626340,3383626343,US
+3383626344,3383701503,MX
3383701504,3383705599,BR
3383705600,3383754751,MX
3383754752,3384148991,AR
-3384148992,3384153087,BR
+3384148992,3384152063,BR
+3384152064,3384153087,AR
3384153088,3384154111,MX
3384154112,3384155135,SV
3384155136,3384162047,BR
@@ -152070,9 +161303,7 @@
3389071360,3389079551,PG
3389079552,3389090239,HK
3389090240,3389090303,CN
-3389090304,3389090815,HK
-3389090816,3389091071,SG
-3389091072,3389092351,HK
+3389090304,3389092351,HK
3389092352,3389092863,PH
3389092864,3389093887,HK
3389093888,3389095935,IN
@@ -152121,13 +161352,13 @@
3389214720,3389218815,NZ
3389218816,3389222911,AU
3389222912,3389223935,US
-3389223936,3389225983,IN
-3389225984,3389226495,AU
+3389223936,3389226495,IN
3389226496,3389226751,SG
3389226752,3389227007,IN
3389227008,3389227519,CN
3389227520,3389228031,PK
3389228032,3389228543,AU
+3389228544,3389228799,CN
3389228800,3389229055,SG
3389229056,3389229311,JP
3389229312,3389229567,AU
@@ -152187,7 +161418,9 @@
3389345792,3389349887,TH
3389349888,3389358079,AU
3389358080,3389366271,PK
-3389366272,3389372415,AU
+3389366272,3389366783,AU
+3389366784,3389367039,NZ
+3389367040,3389372415,AU
3389372416,3389372927,CA
3389372928,3389374463,AU
3389374464,3389378559,MN
@@ -152287,8 +161520,7 @@
3389542400,3389543423,JP
3389543424,3389544447,TH
3389544448,3389545471,HK
-3389545472,3389545727,AU
-3389545728,3389545983,HK
+3389545472,3389545983,AU
3389545984,3389546495,SG
3389554688,3389562879,CN
3389562880,3389571071,KR
@@ -153230,13 +162462,14 @@
3392438784,3392439039,IN
3392439040,3392439551,ID
3392439552,3392439807,PG
-3392439808,3392440319,AU
+3392439808,3392440063,IN
+3392440064,3392440319,AU
3392440320,3392440575,HK
3392440576,3392440831,ID
3392440832,3392441343,BD
3392441344,3392441855,ID
3392441856,3392442111,AU
-3392442112,3392442367,CN
+3392442112,3392442623,CN
3392442624,3392442879,AU
3392442880,3392443391,ID
3392443392,3392443647,IN
@@ -153286,8 +162519,7 @@
3392637952,3392638975,TH
3392638976,3392643071,AU
3392643072,3392647167,ID
-3392647168,3392651007,MN
-3392651008,3392651263,AU
+3392647168,3392651263,MN
3392651264,3392659455,JP
3392659456,3392667647,TW
3392667648,3392668671,IN
@@ -153327,6 +162559,7 @@
3392819200,3392823295,MY
3392823296,3392824319,KH
3392824320,3392824575,AU
+3392824576,3392824831,CN
3392824832,3392825343,IN
3392825344,3392826367,CN
3392826368,3392827391,BD
@@ -153799,9 +163032,7 @@
3394306048,3394307071,CN
3394307072,3394308095,AU
3394308096,3394310143,JP
-3394310144,3394313727,AU
-3394313728,3394313983,PH
-3394313984,3394314239,AU
+3394310144,3394314239,AU
3394314240,3394322431,ID
3394322432,3394326527,AU
3394326528,3394330623,JP
@@ -153813,7 +163044,9 @@
3394359296,3394363391,AU
3394363392,3394365951,HK
3394365952,3394366463,JP
-3394366464,3394441215,HK
+3394366464,3394376703,HK
+3394376704,3394377215,GB
+3394377216,3394441215,HK
3394441216,3394453503,IN
3394453504,3394461695,AU
3394461696,3394465791,SG
@@ -153828,9 +163061,7 @@
3394494464,3394498559,JP
3394498560,3394500607,HK
3394500608,3394501631,SG
-3394501632,3394502655,CN
-3394502656,3394503679,HK
-3394503680,3394507263,CN
+3394501632,3394507263,CN
3394507264,3394507775,JP
3394507776,3394508287,AU
3394508288,3394508543,CN
@@ -153918,12 +163149,12 @@
3394832384,3394834431,CN
3394834432,3394834687,HK
3394834688,3394834943,JP
-3394834944,3394835199,HK
-3394835200,3394835455,JP
+3394834944,3394835455,HK
3394835456,3394835583,SG
3394835584,3394835711,JP
3394835712,3394835967,HK
-3394835968,3394836479,JP
+3394835968,3394836223,JP
+3394836224,3394836479,HK
3394836480,3394838527,BT
3394838528,3394846719,NZ
3394846720,3394850815,IN
@@ -153937,8 +163168,7 @@
3394860544,3394860799,IN
3394860800,3394861055,CN
3394861056,3394861311,IN
-3394861312,3394861567,TW
-3394861568,3394862079,HK
+3394861312,3394862079,HK
3394862080,3394863103,KR
3394863104,3394871295,NZ
3394871296,3394879487,AU
@@ -153965,7 +163195,9 @@
3394907136,3394908159,NZ
3394908160,3394910207,AU
3394910208,3394912255,NZ
-3394912256,3394920447,PF
+3394912256,3394913535,PF
+3394913536,3394913791,NZ
+3394913792,3394920447,PF
3394920448,3394928639,CN
3394928640,3394936831,PH
3394936832,3394940927,AU
@@ -154047,6 +163279,7 @@
3395174400,3395174911,AU
3395174912,3395175167,NP
3395175168,3395175423,IN
+3395175424,3395175679,CN
3395175680,3395175935,AU
3395175936,3395176191,SG
3395176192,3395176703,AU
@@ -154077,7 +163310,9 @@
3395219456,3395223551,TH
3395223552,3395231743,CN
3395231744,3395239935,JP
-3395239936,3395254783,SG
+3395239936,3395248127,SG
+3395248128,3395250175,IN
+3395250176,3395254783,SG
3395254784,3395255039,IN
3395255040,3395256319,SG
3395256320,3395264511,ID
@@ -154121,9 +163356,7 @@
3397095424,3397095935,MP
3397095936,3397096447,GU
3397096448,3397097471,MP
-3397097472,3397098751,GU
-3397098752,3397099007,MP
-3397099008,3397099519,GU
+3397097472,3397099519,GU
3397099520,3397103615,HK
3397103616,3397105663,LA
3397105664,3397107711,JP
@@ -154298,9 +163531,7 @@
3397623808,3397631999,GU
3397632000,3397636095,JP
3397636096,3397640191,CN
-3397640192,3397640575,MN
-3397640576,3397640703,AU
-3397640704,3397648383,MN
+3397640192,3397648383,MN
3397648384,3397713919,TW
3397713920,3397715967,ID
3397715968,3397718015,HK
@@ -154348,22 +163579,23 @@
3397871872,3397872127,AU
3397872128,3397875711,JP
3397875712,3397876735,AU
-3397876736,3397877759,TW
-3397877760,3397887999,JP
-3397888000,3397889023,IN
-3397889024,3397891071,JP
+3397876736,3397891071,JP
3397891072,3397892095,IN
3397892096,3397895423,JP
3397895424,3397895679,AU
3397895680,3397906111,JP
3397906112,3397906175,IN
3397906176,3397907455,JP
-3397907456,3397908479,HK
+3397907456,3397907711,HK
+3397907712,3397907967,SG
+3397907968,3397908479,HK
3397908480,3397910527,JP
3397910528,3397918719,SG
3397918720,3397922815,AU
3397922816,3397926911,CN
-3397926912,3397933055,IN
+3397926912,3397929983,IN
+3397929984,3397931007,US
+3397931008,3397933055,IN
3397933056,3397934079,BD
3397934080,3397935103,PH
3397935104,3397939199,AU
@@ -154604,11 +163836,7 @@
3399417856,3399450623,ID
3399450624,3399467007,AU
3399467008,3399483391,IN
-3399483392,3399487999,BN
-3399488000,3399488063,MY
-3399488064,3399488127,BN
-3399488128,3399488255,MY
-3399488256,3399495679,BN
+3399483392,3399495679,BN
3399495680,3399499775,NZ
3399499776,3399507967,TW
3399507968,3399512063,AU
@@ -154654,7 +163882,9 @@
3399662592,3399663615,IN
3399663616,3399671807,ID
3399671808,3399679999,IN
-3399680000,3399680447,HK
+3399680000,3399680031,HK
+3399680032,3399680047,SG
+3399680048,3399680447,HK
3399680448,3399680463,SG
3399680464,3399688191,HK
3399688192,3399696383,SG
@@ -154713,8 +163943,8 @@
3399924736,3399925759,PH
3399925760,3399933951,NP
3399933952,3399942143,CN
-3399942144,3399944191,SG
-3399944192,3399946239,AU
+3399942144,3399945983,SG
+3399945984,3399946239,AU
3399946240,3399950335,SG
3399950336,3399954943,AU
3399954944,3399991295,SG
@@ -154811,8 +164041,7 @@
3400337152,3400337407,PH
3400337408,3400339455,CN
3400339456,3400341503,ID
-3400341504,3400342015,AU
-3400342016,3400343551,US
+3400341504,3400343551,US
3400343552,3400351743,TW
3400351744,3400359935,ID
3400359936,3400364031,JP
@@ -154865,7 +164094,7 @@
3400589312,3400597503,CN
3400597504,3400605695,HK
3400605696,3400607743,JP
-3400607744,3400608767,AU
+3400607744,3400608767,SG
3400608768,3400609791,IN
3400609792,3400630271,JP
3400630272,3400646655,IN
@@ -155364,8 +164593,8 @@
3406594560,3406594815,CN
3406594816,3406596351,AU
3406596352,3406596607,CN
-3406596608,3406599167,AU
-3406599168,3406600191,JP
+3406596608,3406598143,AU
+3406598144,3406600191,JP
3406600192,3406611455,AU
3406611456,3406612479,CN
3406612480,3406614527,HK
@@ -155569,7 +164798,9 @@
3406967296,3406967551,HK
3406967552,3406967807,IN
3406967808,3406968063,CN
-3406968064,3406972927,AU
+3406968064,3406969599,AU
+3406969600,3406969855,NZ
+3406969856,3406972927,AU
3406972928,3406973951,CN
3406973952,3406974975,AU
3406974976,3406975487,CN
@@ -155774,9 +165005,7 @@
3407261696,3407263743,HK
3407263744,3407264255,AU
3407264256,3407264511,HK
-3407264512,3407264767,AU
-3407264768,3407265023,NZ
-3407265024,3407266303,AU
+3407264512,3407266303,AU
3407266304,3407266559,CN
3407266560,3407268863,AU
3407268864,3407269119,US
@@ -155927,7 +165156,9 @@
3407459328,3407459583,CN
3407459584,3407459839,AU
3407459840,3407460095,CN
-3407460096,3407462143,AU
+3407460096,3407461119,AU
+3407461120,3407461375,NZ
+3407461376,3407462143,AU
3407462144,3407462399,CN
3407462400,3407464191,AU
3407464192,3407464703,CN
@@ -156068,7 +165299,7 @@
3407618304,3407619071,CN
3407619072,3407620863,AU
3407620864,3407621375,CN
-3407621376,3407623679,AU
+3407621376,3407623423,AU
3407623680,3407623935,CN
3407623936,3407624191,AU
3407624192,3407624447,CN
@@ -156496,22 +165727,23 @@
3409435904,3409436159,CN
3409436160,3409436671,AU
3409436672,3409436927,CN
-3409436928,3409445119,AU
-3409445120,3409445375,CN
-3409445376,3409445887,AU
+3409436928,3409445887,AU
3409445888,3409446143,CN
3409446144,3409447935,AU
3409447936,3409448191,CN
3409448192,3409451007,AU
3409451008,3409451263,CN
-3409451264,3409454591,AU
+3409451264,3409453055,AU
+3409453056,3409453567,NZ
+3409453568,3409454591,AU
3409454592,3409454847,CN
3409454848,3409455103,AU
3409455104,3409455359,CN
3409455360,3409456639,AU
3409456640,3409456895,CN
3409456896,3409457152,AU
-3409457153,3409459199,HK
+3409457153,3409458175,CN
+3409458176,3409459199,HK
3409459200,3409462271,AU
3409462272,3409462783,CN
3409462784,3409465855,AU
@@ -156629,8 +165861,7 @@
3409878016,3409879295,AU
3409879296,3409879551,CN
3409879552,3409882111,AU
-3409882112,3409882879,IN
-3409882880,3409883135,LK
+3409882112,3409883135,IN
3409883136,3409884159,AU
3409884160,3409885183,US
3409885184,3409887999,AU
@@ -156856,9 +166087,7 @@
3411329024,3411337215,HK
3411337216,3411341311,AU
3411341312,3411345407,KR
-3411345408,3411354879,HK
-3411354880,3411355647,SG
-3411355648,3411376127,HK
+3411345408,3411376127,HK
3411376128,3411376383,US
3411376384,3411410943,HK
3411410944,3411443711,CN
@@ -156967,8 +166196,7 @@
3412002816,3412004863,GU
3412004864,3412017151,JP
3412017152,3412025343,SG
-3412025344,3412049919,CN
-3412049920,3412050943,HK
+3412025344,3412050943,CN
3412050944,3412051967,KH
3412051968,3412055039,CN
3412055040,3412056063,HK
@@ -156990,7 +166218,7 @@
3412126720,3412127743,JP
3412127744,3412128767,MM
3412128768,3412129791,PH
-3412129792,3412130815,AU
+3412129792,3412131839,AU
3412131840,3412213759,NZ
3412213760,3412221951,AU
3412221952,3412230143,IN
@@ -157103,7 +166331,9 @@
3413147648,3413155839,IN
3413155840,3413164031,SG
3413164032,3413172223,BD
-3413172224,3413180415,MY
+3413172224,3413173247,MY
+3413173248,3413173503,BN
+3413173504,3413180415,MY
3413180416,3413213183,TH
3413213184,3413229567,VN
3413229568,3413245951,AU
@@ -157136,7 +166366,7 @@
3413540864,3413557247,NZ
3413557248,3413565439,CN
3413565440,3413569535,TW
-3413569536,3413569791,AU
+3413569536,3413569791,SG
3413569792,3413570047,CN
3413570048,3413570303,KH
3413570304,3413570559,AU
@@ -157307,13 +166537,7 @@
3413679616,3413679743,JP
3413679744,3413679807,SG
3413679808,3413679871,JP
-3413679872,3413680127,SG
-3413680128,3413680639,JP
-3413680640,3413680895,SG
-3413680896,3413681151,JP
-3413681152,3413681343,SG
-3413681344,3413681407,JP
-3413681408,3413683487,SG
+3413679872,3413683487,SG
3413683488,3413683519,JP
3413683520,3413683663,SG
3413683664,3413683679,JP
@@ -157444,8 +166668,8 @@
3413966848,3414033919,SG
3414033920,3414034431,MY
3414034432,3414050303,SG
-3414050304,3414050559,US
-3414050560,3414155519,SG
+3414050304,3414050815,US
+3414050816,3414155519,SG
3414155520,3414155775,PH
3414155776,3414163455,SG
3414163456,3414171647,PK
@@ -157499,8 +166723,7 @@
3414491136,3414523903,TW
3414523904,3414532095,JP
3414532096,3414540287,KR
-3414540288,3414554623,JP
-3414554624,3414555647,AU
+3414540288,3414555647,JP
3414555648,3414556671,PK
3414556672,3414605823,AU
3414605824,3414616063,IN
@@ -157708,9 +166931,9 @@
3416375296,3416383487,CN
3416383488,3416391679,HK
3416391680,3416457215,VN
-3416457216,3416474583,JP
-3416474584,3416474599,AU
-3416474600,3416482127,JP
+3416457216,3416473599,JP
+3416473600,3416474623,AU
+3416474624,3416482127,JP
3416482128,3416482133,SG
3416482134,3416489983,JP
3416489984,3416506367,VN
@@ -157909,6 +167132,7 @@
3418162688,3418163199,CN
3418163200,3418165247,PH
3418165248,3418167295,MY
+3418167296,3418167551,NZ
3418167552,3418167807,AU
3418167808,3418168319,HK
3418168320,3418169343,VN
@@ -157942,7 +167166,7 @@
3418235904,3418236415,ID
3418236416,3418236927,HK
3418236928,3418241023,ID
-3418241024,3418243071,US
+3418241024,3418243071,NL
3418243072,3418251263,PH
3418251264,3418255359,CN
3418255360,3418257407,ID
@@ -157954,6 +167178,7 @@
3418275840,3418279935,AU
3418279936,3418281983,NZ
3418281984,3418282239,NR
+3418282240,3418282495,NZ
3418282496,3418283519,PH
3418283520,3418284031,AU
3418284032,3418286079,JP
@@ -158030,7 +167255,8 @@
3418554368,3418570751,VN
3418570752,3418578943,CN
3418578944,3418583039,TH
-3418583040,3418585087,HK
+3418583040,3418584063,CN
+3418584064,3418585087,HK
3418585088,3418586111,SG
3418586112,3418586367,AU
3418586368,3418586879,SG
@@ -158104,7 +167330,7 @@
3419439104,3419442431,SG
3419442432,3419442687,HK
3419442688,3419457535,SG
-3419457536,3419457791,DE
+3419457536,3419457791,SA
3419457792,3419471871,SG
3419471872,3419504639,TH
3419504640,3419508735,HK
@@ -158173,7 +167399,8 @@
3419906048,3419914239,PK
3419914240,3419922431,KR
3419922432,3419924479,JP
-3419924480,3419930623,HK
+3419924480,3419925503,CN
+3419925504,3419930623,HK
3419930624,3419971583,JP
3419971584,3419979775,KR
3419979776,3419996159,JP
@@ -158245,9 +167472,10 @@
3420435456,3420436479,JP
3420436480,3420437503,AU
3420437504,3420438527,IN
-3420438528,3420444159,HK
-3420444160,3420444415,GB
-3420444416,3420454911,HK
+3420438528,3420443647,HK
+3420443648,3420444159,AU
+3420444160,3420444671,GB
+3420444672,3420454911,HK
3420454912,3422000535,KR
3422000536,3422000537,IN
3422000538,3422552063,KR
@@ -158381,13 +167609,9 @@
3424493824,3424494079,CA
3424494080,3424507135,US
3424507136,3424507391,CA
-3424507392,3424841727,US
-3424841728,3424841983,CU
-3424841984,3425173503,US
+3424507392,3425173503,US
3425173504,3425304575,CA
-3425304576,3425441791,US
-3425441792,3425443839,GB
-3425443840,3425471487,US
+3425304576,3425471487,US
3425471488,3425472511,CA
3425472512,3425483775,US
3425483776,3425484799,GU
@@ -158413,9 +167637,7 @@
3426369024,3426369535,CA
3426369536,3426387967,US
3426387968,3426388991,MX
-3426388992,3426400255,US
-3426400256,3426400511,CA
-3426400512,3426418687,US
+3426388992,3426418687,US
3426418688,3426420479,GB
3426420480,3426420735,US
3426420736,3426435071,GB
@@ -158450,7 +167672,8 @@
3427487744,3427487999,GB
3427488000,3427503615,US
3427503616,3427503871,AU
-3427503872,3427504127,SG
+3427503872,3427503872,US
+3427503873,3427504127,SG
3427504128,3427601151,US
3427601152,3427601407,PR
3427601408,3427651071,US
@@ -158462,21 +167685,17 @@
3427732736,3427735039,IE
3427735040,3427735295,US
3427735296,3427736063,HK
-3427736064,3427743231,US
-3427743232,3427743487,GB
-3427743488,3427743743,DE
-3427743744,3427745791,US
+3427736064,3427745791,US
3427745792,3427746047,GB
3427746048,3427748607,US
3427748608,3427748863,DE
3427748864,3427749887,US
3427749888,3427750655,DE
-3427750656,3427750911,GB
-3427750912,3427751423,US
+3427750656,3427751423,US
3427751424,3427751455,BE
3427751456,3427753471,US
3427753472,3427753727,FI
-3427753728,3427753983,IT
+3427753728,3427753983,US
3427753984,3427754239,CH
3427754240,3427754495,US
3427754496,3427754751,DE
@@ -158486,16 +167705,9 @@
3427755776,3427756031,BE
3427756032,3427756287,US
3427756288,3427756543,AU
-3427756544,3427757055,US
-3427757056,3427757311,GR
-3427757312,3427757567,US
+3427756544,3427757567,US
3427757568,3427757823,JP
-3427757824,3427758079,DE
-3427758080,3427758591,US
-3427758592,3427758847,IT
-3427758848,3427759359,US
-3427759360,3427759871,GB
-3427759872,3427760127,US
+3427757824,3427760127,US
3427760128,3427760895,CA
3427760896,3427762175,US
3427762176,3427762431,DE
@@ -158600,9 +167812,7 @@
3428594688,3428595199,CA
3428595200,3428596223,US
3428596224,3428597759,CA
-3428597760,3428598015,US
-3428598016,3428598271,CA
-3428598272,3428599295,US
+3428597760,3428599295,US
3428599296,3428599551,CA
3428599552,3428601343,US
3428601344,3428601599,CA
@@ -158610,11 +167820,9 @@
3428602112,3428602367,CA
3428602368,3428607999,US
3428608000,3428609023,CA
-3428609024,3428610047,US
-3428610048,3428610559,CA
-3428610560,3428610815,US
-3428610816,3428611071,CA
-3428611072,3428612607,US
+3428609024,3428610303,US
+3428610304,3428610559,CA
+3428610560,3428612607,US
3428612608,3428613119,CA
3428613120,3428613631,US
3428613632,3428613887,CA
@@ -158627,15 +167835,17 @@
3428616192,3428616703,US
3428616704,3428616959,CA
3428616960,3428617215,US
-3428617216,3428617983,CA
-3428617984,3428618751,US
+3428617216,3428617471,CA
+3428617472,3428618751,US
3428618752,3428619007,CA
-3428619008,3428620287,US
-3428620288,3428620799,CA
+3428619008,3428620543,US
+3428620544,3428620799,CA
3428620800,3428621567,US
3428621568,3428621823,CA
3428621824,3428626431,US
-3428626432,3428627199,CA
+3428626432,3428626687,CA
+3428626688,3428626943,US
+3428626944,3428627199,CA
3428627200,3428627455,US
3428627456,3428628223,CA
3428628224,3428630527,US
@@ -158644,21 +167854,11 @@
3428635392,3428635647,CA
3428635648,3428635903,US
3428635904,3428636671,CA
-3428636672,3428637695,US
-3428637696,3428637951,CA
-3428637952,3428638975,US
-3428638976,3428639231,CA
-3428639232,3428641023,US
+3428636672,3428641023,US
3428641024,3428641279,CA
-3428641280,3428643071,US
-3428643072,3428643327,CA
-3428643328,3428644863,US
+3428641280,3428644863,US
3428644864,3428645119,CA
-3428645120,3428646143,US
-3428646144,3428646399,CA
-3428646400,3428646655,US
-3428646656,3428646911,CA
-3428646912,3428660735,US
+3428645120,3428660735,US
3428660736,3428661503,CA
3428661504,3428695567,US
3428695568,3428695583,JP
@@ -158715,17 +167915,13 @@
3430724608,3430725631,CA
3430725632,3430729471,US
3430729472,3430729727,GB
-3430729728,3430749951,US
-3430749952,3430750207,CA
-3430750208,3430769407,US
+3430729728,3430769407,US
3430769408,3430769663,CA
3430769664,3430770943,US
3430770944,3430771199,CA
3430771200,3430771967,US
3430771968,3430772223,CA
-3430772224,3430777343,US
-3430777344,3430777599,CA
-3430777600,3430779903,US
+3430772224,3430779903,US
3430779904,3430780159,CA
3430780160,3430782463,US
3430782464,3430782719,CA
@@ -158836,7 +168032,9 @@
3432689152,3432689663,CA
3432689664,3432695807,US
3432695808,3432697855,CA
-3432697856,3432736255,US
+3432697856,3432726271,US
+3432726272,3432726527,CA
+3432726528,3432736255,US
3432736256,3432736511,GB
3432736512,3432737279,US
3432737280,3432737535,SG
@@ -158882,7 +168080,9 @@
3434831616,3434872575,CA
3434872576,3435069439,US
3435069440,3435072511,CA
-3435072512,3435072639,US
+3435072512,3435072611,US
+3435072612,3435072623,CA
+3435072624,3435072639,US
3435072640,3435134975,CA
3435134976,3435216383,US
3435216384,3435216637,DE
@@ -158922,13 +168122,9 @@
3436697088,3436697343,VE
3436697344,3437249279,US
3437249280,3437249535,CA
-3437249536,3437259775,US
-3437259776,3437260031,CA
-3437260032,3437262079,US
+3437249536,3437262079,US
3437262080,3437262335,CA
-3437262336,3437266431,US
-3437266432,3437266687,CA
-3437266688,3437297919,US
+3437262336,3437297919,US
3437297920,3437301759,CA
3437301760,3437305855,US
3437305856,3437307391,CA
@@ -158952,7 +168148,7 @@
3437335552,3437336063,CA
3437336064,3437336319,US
3437336320,3437341695,CA
-3437341696,3437341951,US
+3437341696,3437342207,US
3437342208,3437343231,CA
3437343232,3437343487,US
3437343488,3437350911,CA
@@ -158972,11 +168168,7 @@
3437694208,3437695231,AT
3437695232,3437703423,US
3437703424,3437703679,NL
-3437703680,3437704191,US
-3437704192,3437704703,CH
-3437704704,3437707775,US
-3437707776,3437708031,FR
-3437708032,3437708287,US
+3437703680,3437708287,US
3437708288,3437708799,FI
3437708800,3437710079,US
3437710080,3437710335,GB
@@ -159032,9 +168224,7 @@
3438137184,3438137191,CA
3438137192,3438139391,US
3438139392,3438140415,GB
-3438140416,3438142943,US
-3438142944,3438142975,CA
-3438142976,3438215423,US
+3438140416,3438215423,US
3438215424,3438215935,CA
3438215936,3438216191,US
3438216192,3438217983,CA
@@ -159066,13 +168256,17 @@
3438611456,3438611711,GB
3438611712,3438611787,US
3438611788,3438611791,HU
-3438611792,3438725647,US
+3438611792,3438611967,US
+3438611968,3438612479,GB
+3438612480,3438725647,US
3438725648,3438725655,MX
3438725656,3438895103,US
3438895104,3438896127,HN
3438896128,3438915605,US
3438915606,3438915606,GT
-3438915607,3448377343,US
+3438915607,3444220159,US
+3444220160,3444220415,JP
+3444220416,3448377343,US
3448377344,3448377855,AG
3448377856,3448379647,US
3448379648,3448379903,SG
@@ -159110,8 +168304,8 @@
3449165568,3449166847,US
3449166848,3449167359,CA
3449167360,3449167871,US
-3449167872,3449168383,CA
-3449168384,3449170175,US
+3449167872,3449168127,CA
+3449168128,3449170175,US
3449170176,3449170431,CA
3449170432,3449170687,US
3449170688,3449171199,CA
@@ -159124,7 +168318,9 @@
3449176576,3449176831,US
3449176832,3449177087,CA
3449177088,3449177343,US
-3449177344,3449178367,CA
+3449177344,3449177599,CA
+3449177600,3449178111,US
+3449178112,3449178367,CA
3449178368,3449178623,US
3449178624,3449178879,CA
3449178880,3449180671,US
@@ -159137,15 +168333,11 @@
3449185280,3449185535,CA
3449185536,3449188863,US
3449188864,3449189119,CA
-3449189120,3449190399,US
-3449190400,3449190655,CA
-3449190656,3449191423,US
+3449189120,3449191423,US
3449191424,3449191679,CA
3449191680,3449192447,US
3449192448,3449194495,CA
-3449194496,3449195007,US
-3449195008,3449195263,CA
-3449195264,3449195519,US
+3449194496,3449195519,US
3449195520,3449195775,CA
3449195776,3449196031,US
3449196032,3449196287,CA
@@ -159155,11 +168347,9 @@
3449204224,3449204479,CA
3449204480,3449210623,US
3449210624,3449211135,CA
-3449211136,3449211647,US
-3449211648,3449212415,CA
-3449212416,3449212671,US
-3449212672,3449212927,CA
-3449212928,3449213183,US
+3449211136,3449212159,US
+3449212160,3449212415,CA
+3449212416,3449213183,US
3449213184,3449213439,CA
3449213440,3449215871,US
3449215872,3449215935,CA
@@ -159241,17 +168431,17 @@
3450612480,3450612735,CA
3450612736,3450632191,US
3450632192,3450634239,CA
-3450634240,3450685183,US
-3450685184,3450685439,CA
-3450685440,3450699007,US
+3450634240,3450699007,US
3450699008,3450699263,CA
3450699264,3450731519,US
3450731520,3450732543,CA
-3450732544,3450773503,US
+3450732544,3450742783,US
+3450742784,3450743039,SG
+3450743040,3450773503,US
3450773504,3450777599,CA
-3450777600,3450849791,US
-3450849792,3450850047,GB
-3450850048,3450852351,US
+3450777600,3450851071,US
+3450851072,3450851327,SG
+3450851328,3450852351,US
3450852352,3450853375,CA
3450853376,3450986495,US
3450986496,3450986751,HK
@@ -159305,11 +168495,7 @@
3451835904,3451836159,CA
3451836160,3451836927,US
3451836928,3451837183,CA
-3451837184,3451837695,US
-3451837696,3451837951,CA
-3451837952,3451879423,US
-3451879424,3451879935,DE
-3451879936,3451890431,US
+3451837184,3451890431,US
3451890432,3451890687,AU
3451890688,3451896319,US
3451896320,3451896575,DE
@@ -159335,22 +168521,16 @@
3452765696,3452766207,US
3452766208,3452766463,CA
3452766464,3452766975,US
-3452766976,3452767487,CA
-3452767488,3452767743,US
-3452767744,3452767999,CA
-3452768000,3452769023,US
+3452766976,3452767231,CA
+3452767232,3452769023,US
3452769024,3452769279,CA
3452769280,3452769791,US
3452769792,3452770047,CA
3452770048,3452770303,US
3452770304,3452770559,CA
-3452770560,3452770815,US
-3452770816,3452771071,CA
-3452771072,3452771839,US
+3452770560,3452771839,US
3452771840,3452772095,CA
-3452772096,3452772351,US
-3452772352,3452772607,CA
-3452772608,3452772863,US
+3452772096,3452772863,US
3452772864,3452773119,CA
3452773120,3452776191,US
3452776192,3452776703,CA
@@ -159362,13 +168542,11 @@
3452784384,3452784639,CA
3452784640,3452785663,US
3452785664,3452785919,CA
-3452785920,3452786175,US
-3452786176,3452786431,CA
-3452786432,3452787199,US
+3452785920,3452787199,US
3452787200,3452787455,CA
3452787456,3452787711,US
-3452787712,3452788479,CA
-3452788480,3452789759,US
+3452787712,3452787967,CA
+3452787968,3452789759,US
3452789760,3452790015,CA
3452790016,3452791807,US
3452791808,3452792319,CA
@@ -159377,14 +168555,14 @@
3452793088,3452793343,US
3452793344,3452793599,CA
3452793600,3452793855,US
-3452793856,3452795135,CA
-3452795136,3452795391,US
+3452793856,3452794111,CA
+3452794112,3452795391,US
3452795392,3452796159,CA
3452796160,3452796415,US
3452796416,3452797183,CA
3452797184,3452798207,US
-3452798208,3452798719,CA
-3452798720,3452799743,US
+3452798208,3452798463,CA
+3452798464,3452799743,US
3452799744,3452800255,CA
3452800256,3452800511,US
3452800512,3452800767,CA
@@ -159409,8 +168587,8 @@
3452809728,3452811007,US
3452811008,3452811263,CA
3452811264,3452811775,US
-3452811776,3452812287,CA
-3452812288,3452812799,US
+3452811776,3452812031,CA
+3452812032,3452812799,US
3452812800,3452813311,CA
3452813312,3452813567,US
3452813568,3452814079,CA
@@ -159419,8 +168597,8 @@
3452815360,3452816895,US
3452816896,3452817663,CA
3452817664,3452817919,US
-3452817920,3452818431,CA
-3452818432,3452818687,US
+3452817920,3452818175,CA
+3452818176,3452818687,US
3452818688,3452818943,CA
3452818944,3452819199,US
3452819200,3452819711,CA
@@ -159430,8 +168608,8 @@
3452823808,3452824063,CA
3452824064,3452824831,US
3452824832,3452825599,CA
-3452825600,3452825855,US
-3452825856,3452826623,CA
+3452825600,3452826111,US
+3452826112,3452826623,CA
3452826624,3452827391,US
3452827392,3452828159,CA
3452828160,3452828415,US
@@ -159508,9 +168686,15 @@
3453195520,3453206527,CA
3453206528,3453207551,HN
3453207552,3453207807,NI
-3453207808,3453210623,HN
+3453207808,3453208575,HN
+3453208576,3453208831,NI
+3453208832,3453209599,HN
+3453209600,3453209855,US
+3453209856,3453210367,HN
+3453210368,3453210623,SV
3453210624,3453213183,CR
-3453213184,3453214719,HN
+3453213184,3453214207,HN
+3453214208,3453214719,US
3453214720,3453215231,GT
3453215232,3453215999,SV
3453216000,3453217023,CR
@@ -159530,9 +168714,7 @@
3453406976,3453407231,GD
3453407232,3453407743,BB
3453407744,3453408255,GD
-3453408256,3453409023,BB
-3453409024,3453409535,KN
-3453409536,3453411327,BB
+3453408256,3453411327,BB
3453411328,3453419519,US
3453419520,3453427711,MO
3453427712,3453551844,US
@@ -159567,9 +168749,7 @@
3454003014,3454003014,ES
3454003015,3454004997,US
3454004998,3454004998,GB
-3454004999,3454287871,US
-3454287872,3454296063,GB
-3454296064,3454497791,US
+3454004999,3454497791,US
3454497792,3454498815,MX
3454498816,3454599423,US
3454599424,3454601215,CA
@@ -159628,21 +168808,25 @@
3454816768,3454828287,CA
3454828288,3454828543,US
3454828544,3454861055,CA
-3454861056,3454861823,US
-3454861824,3454867711,CA
+3454861056,3454861567,US
+3454861568,3454867711,CA
3454867712,3454867967,US
3454867968,3454881535,CA
3454881536,3454881791,US
3454881792,3454883839,CA
-3454883840,3454915071,US
+3454883840,3454884095,US
+3454884096,3454884351,CA
+3454884352,3454884607,US
+3454884608,3454885119,CA
+3454885120,3454915071,US
3454915072,3454926591,CA
3454926592,3455035647,US
3455035648,3455035903,AU
3455035904,3455109119,US
3455109120,3455111167,HN
3455111168,3455115263,SR
-3455115264,3455132159,US
-3455132160,3455133695,BO
+3455115264,3455132671,US
+3455132672,3455133695,BO
3455133696,3455320063,US
3455320064,3455322111,FR
3455322112,3455357951,US
@@ -159655,7 +168839,7 @@
3455488104,3455488111,CA
3455488112,3455582207,US
3455582208,3455583743,SG
-3455583744,3455584255,NL
+3455583744,3455584255,US
3455584256,3455584511,GB
3455584512,3455588351,US
3455588352,3455588863,BE
@@ -159663,13 +168847,9 @@
3455594240,3455594495,DE
3455594496,3455595775,US
3455595776,3455596031,FR
-3455596032,3455596543,US
-3455596544,3455596799,NL
-3455596800,3455597311,US
+3455596032,3455597311,US
3455597312,3455597567,FR
-3455597568,3455600127,US
-3455600128,3455600639,GB
-3455600640,3455601407,US
+3455597568,3455601407,US
3455601408,3455601919,GB
3455601920,3455602175,US
3455602176,3455602687,GB
@@ -159712,9 +168892,7 @@
3455646208,3455646719,FR
3455646720,3455646975,SE
3455646976,3455647231,GB
-3455647232,3455647487,US
-3455647488,3455647743,IT
-3455647744,3455713279,US
+3455647232,3455713279,US
3455713280,3455735039,CA
3455735040,3455735167,US
3455735168,3455778815,CA
@@ -159746,22 +168924,24 @@
3457565184,3457592319,US
3457592320,3457592575,CA
3457592576,3457596671,US
-3457596672,3457597439,CA
-3457597440,3457598207,US
+3457596672,3457597183,CA
+3457597184,3457598207,US
3457598208,3457598463,CA
-3457598464,3457684223,US
-3457684224,3457684479,CA
-3457684480,3457756351,US
+3457598464,3457756351,US
3457756352,3457756383,GB
3457756384,3457762559,US
3457762560,3457762687,CA
-3457762688,3458039807,US
+3457762688,3457762771,US
+3457762772,3457762775,CA
+3457762776,3458039807,US
3458039808,3458043903,CA
3458043904,3458195455,US
3458195456,3458196479,SG
3458196480,3458233343,US
3458233344,3458234367,CA
-3458234368,3458813951,US
+3458234368,3458805759,US
+3458805760,3458807807,GB
+3458807808,3458813951,US
3458813952,3458818047,CA
3458818048,3458820095,US
3458820096,3458820351,CA
@@ -159769,7 +168949,11 @@
3458820864,3458821119,JM
3458821120,3458821887,US
3458821888,3458822143,CA
-3458822144,3458842367,US
+3458822144,3458834687,US
+3458834688,3458837503,CA
+3458837504,3458839551,US
+3458839552,3458840575,CA
+3458840576,3458842367,US
3458842368,3458842623,CA
3458842624,3459055615,US
3459055616,3459121151,CA
@@ -159862,9 +169046,7 @@
3460895232,3460895487,BE
3460895488,3460908287,US
3460908288,3460908543,FI
-3460908544,3460912127,US
-3460912128,3460912383,IT
-3460912384,3460912639,US
+3460908544,3460912639,US
3460912640,3460912895,ES
3460912896,3460916479,US
3460916480,3460916735,GB
@@ -159876,13 +169058,14 @@
3460928256,3460928511,BE
3460928512,3460936703,US
3460936704,3460936959,IT
-3460936960,3460937215,DE
-3460937216,3460947711,US
+3460936960,3460947711,US
3460947712,3460947967,SE
3460947968,3460952575,US
3460952576,3460952831,ES
3460952832,3461021695,US
-3461021696,3461087231,CA
+3461021696,3461031935,CA
+3461031936,3461032191,US
+3461032192,3461087231,CA
3461087232,3461332735,US
3461332736,3461332991,SG
3461332992,3461356543,US
@@ -159904,7 +169087,9 @@
3461462016,3461462527,AU
3461462528,3461462783,US
3461462784,3461463039,SG
-3461463040,3461515775,US
+3461463040,3461508607,US
+3461508608,3461509119,CA
+3461509120,3461515775,US
3461515776,3461516031,CA
3461516032,3461808127,US
3461808128,3461873663,CA
@@ -159912,19 +169097,11 @@
3461940736,3461940991,CA
3461940992,3461948159,US
3461948160,3461948415,CA
-3461948416,3461949951,US
-3461949952,3461950207,CA
-3461950208,3461953535,US
-3461953536,3461953791,CA
-3461953792,3461977855,US
-3461977856,3461978111,CA
-3461978112,3462002175,US
+3461948416,3462002175,US
3462002176,3462002431,CA
3462002432,3462170623,US
3462170624,3462170879,CA
-3462170880,3462171391,US
-3462171392,3462171647,CA
-3462171648,3462179839,US
+3462170880,3462179839,US
3462179840,3462180095,CA
3462180096,3462194175,US
3462194176,3462194431,CA
@@ -159936,9 +169113,7 @@
3462321408,3462321663,CA
3462321664,3462339327,US
3462339328,3462339583,CA
-3462339584,3462340607,US
-3462340608,3462340863,CA
-3462340864,3462593791,US
+3462339584,3462593791,US
3462593792,3462594559,GN
3462594560,3462634751,US
3462634752,3462635007,SG
@@ -159954,9 +169129,7 @@
3463004160,3463006207,CO
3463006208,3463043071,US
3463043072,3463044095,ES
-3463044096,3463089151,US
-3463089152,3463090175,CA
-3463090176,3463176447,US
+3463044096,3463176447,US
3463176448,3463176703,CW
3463176704,3463184383,US
3463184384,3463194623,CA
@@ -159968,8 +169141,8 @@
3463245056,3463249663,CA
3463249664,3463708671,US
3463708672,3463774207,CA
-3463774208,3464126463,US
-3464126464,3464128511,DE
+3463774208,3464127999,US
+3464128000,3464128511,DE
3464128512,3464167679,US
3464167680,3464169215,CA
3464169216,3464169471,US
@@ -160065,9 +169238,7 @@
3464769536,3464773631,CA
3464773632,3464783871,US
3464783872,3464785919,AR
-3464785920,3464789311,US
-3464789312,3464789343,CA
-3464789344,3465154559,US
+3464785920,3465154559,US
3465154560,3465158655,BS
3465158656,3465177087,US
3465177088,3465179135,PE
@@ -160078,8 +169249,8 @@
3465476096,3465510911,US
3465510912,3465543679,JP
3465543680,3466069055,US
-3466069056,3466069071,CA
-3466069072,3466069343,US
+3466069056,3466069087,CA
+3466069088,3466069343,US
3466069344,3466069375,CA
3466069376,3466069447,US
3466069448,3466069455,CA
@@ -160089,11 +169260,11 @@
3466072776,3466072783,CA
3466072784,3466073055,US
3466073056,3466073087,CA
-3466073088,3466158079,US
+3466073088,3466080191,US
+3466080192,3466080199,CA
+3466080200,3466158079,US
3466158080,3466166271,PA
-3466166272,3466489855,US
-3466489856,3466490111,CA
-3466490112,3466564744,US
+3466166272,3466564744,US
3466564745,3466564745,BH
3466564746,3466756095,US
3466756096,3466772479,CA
@@ -160117,9 +169288,7 @@
3466937671,3466937727,DE
3466937728,3466938807,US
3466938808,3466938811,GB
-3466938812,3466962431,US
-3466962432,3466962943,BR
-3466962944,3467037695,US
+3466938812,3467037695,US
3467037696,3467038719,PR
3467038720,3467051007,US
3467051008,3467051263,CA
@@ -160133,9 +169302,7 @@
3467063552,3467068927,CA
3467068928,3467069439,US
3467069440,3467116543,CA
-3467116544,3467229695,US
-3467229696,3467230207,AS
-3467230208,3467378687,US
+3467116544,3467378687,US
3467378688,3467444223,CA
3467444224,3467554815,US
3467554816,3467567103,CA
@@ -160177,13 +169344,7 @@
3468048384,3468048639,FR
3468048640,3468049407,US
3468049408,3468049663,GB
-3468049664,3468051231,US
-3468051232,3468051263,DK
-3468051264,3468052479,US
-3468052480,3468052735,ES
-3468052736,3468057087,US
-3468057088,3468057215,LU
-3468057216,3468058111,US
+3468049664,3468058111,US
3468058112,3468058175,BE
3468058176,3468058368,US
3468058369,3468058432,IT
@@ -160193,23 +169354,13 @@
3468062080,3468062143,GB
3468062144,3468063487,US
3468063488,3468063743,BE
-3468063744,3468064639,US
-3468064640,3468064703,LU
-3468064704,3468064767,US
-3468064768,3468065023,DE
-3468065024,3468065279,US
+3468063744,3468065279,US
3468065280,3468065535,DE
3468065536,3468065983,US
3468065984,3468065999,CZ
-3468066000,3468066319,US
-3468066320,3468066327,FR
-3468066328,3468068863,US
-3468068864,3468069119,CA
-3468069120,3468083967,US
+3468066000,3468083967,US
3468083968,3468084223,AU
-3468084224,3468084735,US
-3468084736,3468084991,SG
-3468084992,3468087807,US
+3468084224,3468087807,US
3468087808,3468088063,SG
3468088064,3468096511,US
3468096512,3468096767,NO
@@ -160312,17 +169463,15 @@
3468688896,3468688911,US
3468688912,3468688943,NL
3468688944,3468688959,IE
-3468688960,3468798463,US
+3468688960,3468795903,US
+3468795904,3468796159,HK
+3468796160,3468798463,US
3468798464,3468798719,BE
3468798720,3468798975,US
3468798976,3468799231,BE
-3468799232,3468802303,US
-3468802304,3468802559,CA
-3468802560,3468894207,US
+3468799232,3468894207,US
3468894208,3468902399,DE
-3468902400,3469031935,US
-3469031936,3469032191,GB
-3469032192,3469055743,US
+3468902400,3469055743,US
3469055744,3469055999,CA
3469056000,3469131775,US
3469131776,3469132799,CA
@@ -160330,9 +169479,7 @@
3469272064,3469272575,DE
3469272576,3469279231,US
3469279232,3469283327,PH
-3469283328,3469860351,US
-3469860352,3469860863,CA
-3469860864,3469893631,US
+3469283328,3469893631,US
3469893632,3469901823,CA
3469901824,3469989887,US
3469989888,3469990399,CA
@@ -160467,7 +169614,9 @@
3475124224,3475171071,CA
3475171072,3475171199,US
3475171200,3475243007,CA
-3475243008,3475386367,US
+3475243008,3475358719,US
+3475358720,3475359231,GB
+3475359232,3475386367,US
3475386368,3475390463,CA
3475390464,3475397119,US
3475397120,3475397631,DE
@@ -160484,11 +169633,7 @@
3475723780,3475723780,TW
3475723781,3475766769,US
3475766770,3475766770,BR
-3475766771,3475882767,US
-3475882768,3475882783,FR
-3475882784,3475882799,US
-3475882800,3475882815,FR
-3475882816,3475885951,US
+3475766771,3475885951,US
3475885952,3475885999,CA
3475886000,3475896319,US
3475896320,3475897343,FR
@@ -160666,7 +169811,9 @@
3478192128,3478257663,CA
3478257664,3478261775,US
3478261776,3478261791,SG
-3478261792,3478274823,US
+3478261792,3478274495,US
+3478274496,3478274559,GB
+3478274560,3478274823,US
3478274824,3478274831,GB
3478274832,3478275983,US
3478275984,3478275999,GB
@@ -160707,9 +169854,7 @@
3480449024,3480551679,US
3480551680,3480551935,DE
3480551936,3480552191,GB
-3480552192,3480552447,US
-3480552448,3480552703,CH
-3480552704,3480553727,US
+3480552192,3480553727,US
3480553728,3480553983,HK
3480553984,3480556031,US
3480556032,3480556287,SG
@@ -160729,9 +169874,7 @@
3480591104,3480591359,ZA
3480591360,3480591615,US
3480591616,3480592127,ID
-3480592128,3480592639,US
-3480592640,3480592895,IE
-3480592896,3480593151,US
+3480592128,3480593151,US
3480593152,3480593407,DK
3480593408,3480593663,SG
3480593664,3480593919,US
@@ -160742,9 +169885,7 @@
3480597248,3480598271,AU
3480598272,3480599039,US
3480599040,3480599295,JP
-3480599296,3480599551,CA
-3480599552,3480599807,SG
-3480599808,3480600575,US
+3480599296,3480600575,US
3480600576,3480601087,DE
3480601088,3480601343,BE
3480601344,3480601855,US
@@ -160754,7 +169895,7 @@
3480603648,3480604159,US
3480604160,3480604671,ES
3480604672,3480604927,IL
-3480604928,3480605183,GB
+3480604928,3480605183,US
3480605184,3480605439,MX
3480605440,3480605695,PH
3480605696,3480605951,MX
@@ -160767,9 +169908,7 @@
3480611584,3480611839,MX
3480611840,3481560063,US
3481560064,3481560575,GU
-3481560576,3481591807,US
-3481591808,3481592063,SA
-3481592064,3481665535,US
+3481560576,3481665535,US
3481665536,3481731071,CA
3481731072,3481796607,US
3481796608,3481812991,AU
@@ -160792,9 +169931,7 @@
3481999616,3481999871,CA
3481999872,3482000127,US
3482000128,3482000383,CA
-3482000384,3482000639,US
-3482000640,3482000895,CA
-3482000896,3482001407,US
+3482000384,3482001407,US
3482001408,3482001663,CA
3482001664,3482002431,US
3482002432,3482002687,CA
@@ -160814,8 +169951,8 @@
3482011648,3482011903,CA
3482011904,3482012927,US
3482012928,3482013951,CA
-3482013952,3482014207,US
-3482014208,3482014719,CA
+3482013952,3482014463,US
+3482014464,3482014719,CA
3482014720,3482017023,US
3482017024,3482017279,CA
3482017280,3482017535,US
@@ -160824,8 +169961,8 @@
3482018048,3482018303,CA
3482018304,3482019327,US
3482019328,3482019583,CA
-3482019584,3482021119,US
-3482021120,3482021631,CA
+3482019584,3482021375,US
+3482021376,3482021631,CA
3482021632,3482021887,US
3482021888,3482022143,CA
3482022144,3482024191,US
@@ -160850,11 +169987,7 @@
3482045184,3482045695,CA
3482045696,3482047231,US
3482047232,3482047487,CA
-3482047488,3482047743,US
-3482047744,3482047999,CA
-3482048000,3482051327,US
-3482051328,3482051583,CA
-3482051584,3482052607,US
+3482047488,3482052607,US
3482052608,3482052863,CA
3482052864,3482054143,US
3482054144,3482054655,CA
@@ -160866,57 +169999,9 @@
3482605568,3482612735,JP
3482612736,3482615807,SG
3482615808,3482632191,CA
-3482632192,3482755377,US
-3482755378,3482755387,RU
-3482755388,3482755623,US
-3482755624,3482755633,AQ
-3482755634,3482755753,US
-3482755754,3482755763,FI
-3482755764,3482756175,US
-3482756176,3482756185,TR
-3482756186,3482756361,US
-3482756362,3482756371,RU
-3482756372,3482756421,US
-3482756422,3482756431,AZ
-3482756432,3482756501,US
-3482756502,3482756511,DM
-3482756512,3482756531,US
-3482756532,3482756541,LK
-3482756542,3482756677,US
-3482756678,3482756687,BR
-3482756688,3482756757,US
-3482756758,3482756767,TR
-3482756768,3482756893,US
-3482756894,3482756903,BR
-3482756904,3482757455,US
-3482757456,3482757465,RU
-3482757466,3482757505,US
-3482757506,3482757515,ES
-3482757516,3482757575,US
-3482757576,3482757585,CN
-3482757586,3482758499,US
-3482758500,3482758527,VE
-3482758528,3482760385,US
-3482760386,3482760423,EG
-3482760424,3482760447,US
-3482760448,3482760703,AI
-3482760704,3482760799,US
-3482760800,3482760815,BR
-3482760816,3482761335,US
-3482761336,3482761343,BY
-3482761344,3482761503,US
-3482761504,3482761519,IL
-3482761520,3482761599,US
-3482761600,3482761727,IT
-3482761728,3482761935,US
-3482761936,3482761951,AT
-3482761952,3482762360,US
-3482762361,3482762368,TR
-3482762369,3482762437,US
-3482762438,3482762445,TR
-3482762446,3482762479,US
-3482762480,3482762489,AU
-3482762490,3482775551,US
+3482632192,3482755071,US
+3482755072,3482763263,SA
+3482763264,3482775551,US
3482775552,3482779647,PR
3482779648,3483025407,US
3483025408,3483041791,DE
@@ -161003,8 +170088,8 @@
3484477184,3484479231,US
3484479232,3484479487,CA
3484479488,3484480255,US
-3484480256,3484481023,CA
-3484481024,3484482559,US
+3484480256,3484480767,CA
+3484480768,3484482559,US
3484482560,3484482815,CA
3484482816,3484483327,US
3484483328,3484483583,CA
@@ -161062,10 +170147,7 @@
3485275648,3485277951,US
3485277952,3485278207,CA
3485278208,3485313023,US
-3485313024,3485313535,HK
-3485313536,3485313599,TH
-3485313600,3485313663,MY
-3485313664,3485313791,TH
+3485313024,3485313791,HK
3485313792,3485314007,MY
3485314008,3485314031,HK
3485314032,3485314047,MY
@@ -161084,9 +170166,11 @@
3485696000,3485883903,US
3485883904,3485884159,CA
3485884160,3485884671,US
-3485884672,3485886719,CA
-3485886720,3485887231,US
-3485887232,3485889023,CA
+3485884672,3485885823,CA
+3485885824,3485885839,US
+3485885840,3485886463,CA
+3485886464,3485888511,US
+3485888512,3485889023,CA
3485889024,3485890047,US
3485890048,3485890815,CA
3485890816,3485891327,US
@@ -161099,12 +170183,10 @@
3485960704,3485960959,CA
3485960960,3485962751,US
3485962752,3485963007,CA
-3485963008,3485965311,US
-3485965312,3485965567,CA
-3485965568,3485965568,US
+3485963008,3485965568,US
3485965569,3485965823,KR
-3485965824,3485966335,CA
-3485966336,3485967615,US
+3485965824,3485966079,CA
+3485966080,3485967615,US
3485967616,3485967616,GB
3485967617,3485967871,US
3485967872,3485968127,CA
@@ -161126,9 +170208,7 @@
3486492416,3486492671,CA
3486492672,3486493183,US
3486493184,3486493439,CA
-3486493440,3486580991,US
-3486580992,3486581247,DE
-3486581248,3486582527,US
+3486493440,3486582527,US
3486582528,3486582783,AU
3486582784,3486583039,DE
3486583040,3486583807,US
@@ -161139,17 +170219,13 @@
3486586112,3486586367,FR
3486586368,3486587135,US
3486587136,3486587391,FR
-3486587392,3486587647,US
-3486587648,3486587903,CL
-3486587904,3486588159,GB
-3486588160,3486590463,US
+3486587392,3486590463,US
3486590464,3486590975,GB
3486590976,3486591999,US
3486592000,3486592063,FI
3486592064,3486592767,US
3486592768,3486593023,NO
-3486593024,3486596863,US
-3486596864,3486597119,GB
+3486593024,3486597119,US
3486597120,3486597375,IE
3486597376,3486597631,IT
3486597632,3486597887,GB
@@ -161173,8 +170249,7 @@
3486609152,3486609407,HK
3486609408,3486610431,US
3486610432,3486610687,SE
-3486610688,3486610943,NL
-3486610944,3486611711,US
+3486610688,3486611711,US
3486611712,3486611775,EC
3486611776,3486612223,US
3486612224,3486612479,SG
@@ -161184,10 +170259,7 @@
3486614272,3486614527,GB
3486614528,3486615039,US
3486615040,3486615295,BE
-3486615296,3486616319,US
-3486616320,3486616575,NO
-3486616576,3486617855,US
-3486617856,3486618111,AU
+3486615296,3486618111,US
3486618112,3486618367,NO
3486618368,3486618623,ES
3486618624,3486618879,US
@@ -161198,8 +170270,7 @@
3486621696,3486621951,FI
3486621952,3486622207,US
3486622208,3486622463,ZA
-3486622464,3486622975,US
-3486622976,3486623231,DE
+3486622464,3486623231,US
3486623232,3486623487,JP
3486623488,3486624767,US
3486624768,3486625023,ES
@@ -161207,19 +170278,15 @@
3486625056,3486625087,MX
3486625088,3486625151,US
3486625152,3486625183,MX
-3486625184,3486625535,US
-3486625536,3486625791,NO
+3486625184,3486625791,US
3486625792,3486626047,NL
-3486626048,3486626303,FI
-3486626304,3486626559,US
+3486626048,3486626559,US
3486626560,3486626567,CH
3486626568,3486626591,US
3486626592,3486626623,FI
3486626624,3486627839,US
3486627840,3486628095,BW
-3486628096,3486628863,US
-3486628864,3486629375,PT
-3486629376,3486629887,US
+3486628096,3486629887,US
3486629888,3486630143,SE
3486630144,3486630655,US
3486630656,3486630911,JP
@@ -161227,22 +170294,17 @@
3486631680,3486631935,ID
3486631936,3486632959,US
3486632960,3486633215,IT
-3486633216,3486633471,GB
-3486633472,3486633983,US
+3486633216,3486633983,US
3486633984,3486634239,HK
-3486634240,3486634751,US
-3486634752,3486635007,CH
-3486635008,3486636031,US
+3486634240,3486636031,US
3486636032,3486636287,ES
3486636288,3486637311,US
3486637312,3486637823,BE
3486637824,3486638335,SE
-3486638336,3486638591,FR
-3486638592,3486638847,US
+3486638336,3486638847,US
3486638848,3486639103,DK
3486639104,3486639359,BE
-3486639360,3486640127,US
-3486640128,3486640383,BE
+3486639360,3486640383,US
3486640384,3486640639,GB
3486640640,3486642431,US
3486642432,3486642687,PT
@@ -161255,18 +170317,16 @@
3486702848,3487039487,US
3487039488,3487105023,CA
3487105024,3487177983,US
-3487177984,3487178111,BE
+3487177984,3487178111,NL
3487178112,3487178175,MX
-3487178176,3487178239,BE
+3487178176,3487178239,NL
3487178240,3487216383,US
3487216384,3487216639,SE
3487216640,3487236095,US
3487236096,3487301631,CA
3487301632,3487706367,US
3487706368,3487706623,RU
-3487706624,3487730687,US
-3487730688,3487731711,CN
-3487731712,3487750399,US
+3487706624,3487750399,US
3487750400,3487750415,HK
3487750416,3487750527,US
3487750528,3487750543,HK
@@ -161295,7 +170355,9 @@
3487924224,3487985663,US
3487985664,3487985664,MY
3487985665,3487986175,LA
-3487986176,3488014335,US
+3487986176,3487987711,US
+3487987712,3487988223,PT
+3487988224,3488014335,US
3488014336,3488022527,CA
3488022528,3488047871,US
3488047872,3488048127,CA
@@ -161424,7 +170486,9 @@
3491961601,3491969023,US
3491969024,3491970047,PR
3491970048,3492151295,US
-3492151296,3492167679,CA
+3492151296,3492162943,CA
+3492162944,3492163071,US
+3492163072,3492167679,CA
3492167680,3492588131,US
3492588132,3492588133,PR
3492588134,3492807155,US
@@ -161437,7 +170501,9 @@
3492877955,3492877955,CA
3492877956,3492880745,US
3492880746,3492880746,ES
-3492880747,3492904215,US
+3492880747,3492896767,US
+3492896768,3492897791,GB
+3492897792,3492904215,US
3492904216,3492904219,AT
3492904220,3492909989,US
3492909990,3492909990,DE
@@ -161445,11 +170511,8 @@
3492917248,3492917503,VI
3492917504,3492921855,US
3492921856,3492922111,VI
-3492922112,3492931583,US
-3492931584,3492933119,CA
-3492933120,3492933375,US
-3492933376,3492933503,CH
-3492933504,3492933631,CA
+3492922112,3492933375,US
+3492933376,3492933631,CH
3492933632,3492939022,US
3492939023,3492939023,DE
3492939024,3492943103,US
@@ -161460,9 +170523,7 @@
3492969472,3492969727,VI
3492969728,3492993023,US
3492993024,3492995071,GB
-3492995072,3493007359,US
-3493007360,3493008383,GB
-3493008384,3493039359,US
+3492995072,3493039359,US
3493039360,3493039615,AR
3493039616,3493039695,US
3493039696,3493039703,RO
@@ -161492,9 +170553,7 @@
3493987328,3493990399,US
3493990400,3493991423,CA
3493991424,3493998591,US
-3493998592,3493999359,KN
-3493999360,3493999487,AI
-3493999488,3494000639,KN
+3493998592,3494000639,KN
3494000640,3494003711,US
3494003712,3494004735,CA
3494004736,3494009855,US
@@ -161564,9 +170623,7 @@
3494359040,3494360063,CA
3494360064,3494361087,US
3494361088,3494362111,CA
-3494362112,3494362623,US
-3494362624,3494363135,CA
-3494363136,3494368255,US
+3494362112,3494368255,US
3494368256,3494369279,CN
3494369280,3494371327,US
3494371328,3494373375,PH
@@ -161583,7 +170640,9 @@
3494438144,3494438399,DM
3494438400,3494438655,KN
3494438656,3494438911,DM
-3494438912,3494459391,US
+3494438912,3494455295,US
+3494455296,3494456319,CA
+3494456320,3494459391,US
3494459392,3494460415,CA
3494460416,3494464511,US
3494464512,3494465535,CA
@@ -161645,14 +170704,14 @@
3494852608,3494854655,CA
3494854656,3494862847,US
3494862848,3494863103,GP
-3494863104,3494863871,DM
+3494863104,3494863359,DM
+3494863360,3494863615,GP
+3494863616,3494863871,DM
3494863872,3494866943,US
3494866944,3494867967,CA
3494867968,3494871295,US
3494871296,3494871551,CA
-3494871552,3494874111,US
-3494874112,3494874367,ES
-3494874368,3494874879,US
+3494871552,3494874879,US
3494874880,3494874911,ES
3494874912,3494893567,US
3494893568,3494894591,CA
@@ -161719,15 +170778,11 @@
3495251968,3495254015,CA
3495254016,3495260159,US
3495260160,3495261183,CA
-3495261184,3495266303,US
-3495266304,3495268351,SG
-3495268352,3495271423,US
+3495261184,3495271423,US
3495271424,3495272447,ZA
3495272448,3495285759,US
3495285760,3495288831,CA
-3495288832,3495331839,US
-3495331840,3495332095,CA
-3495332096,3495332863,US
+3495288832,3495332863,US
3495332864,3495333887,CA
3495333888,3495349247,US
3495349248,3495350271,CA
@@ -161812,14 +170867,11 @@
3495828480,3495829503,CA
3495829504,3495837695,US
3495837696,3495838463,CA
-3495838464,3495838719,US
-3495838720,3495839743,IE
-3495839744,3495847935,US
+3495838464,3495847935,US
3495847936,3495849983,CA
3495849984,3495862271,US
3495862272,3495864319,CA
-3495864320,3495865087,GP
-3495865088,3495865343,MF
+3495864320,3495865343,GP
3495865344,3495866367,US
3495866368,3495868415,LC
3495868416,3495871487,US
@@ -161971,9 +171023,7 @@
3503250432,3503250943,PK
3503250944,3503323135,US
3503323136,3503323647,KE
-3503323648,3503386111,US
-3503386112,3503386367,CH
-3503386368,3503478783,US
+3503323648,3503478783,US
3503478784,3503479039,DE
3503479040,3503738879,US
3503738880,3503740927,CO
@@ -161995,9 +171045,7 @@
3505121024,3505121279,PH
3505121280,3505416959,US
3505416960,3505417215,MX
-3505417216,3505474559,US
-3505474560,3505474815,GU
-3505474816,3505661951,US
+3505417216,3505661951,US
3505661952,3505662463,JM
3505662464,3505818623,US
3505818624,3505819647,BS
@@ -162009,7 +171057,9 @@
3506765824,3506831359,CA
3506831360,3507012607,US
3507012608,3507012639,GR
-3507012640,3507037183,US
+3507012640,3507032063,US
+3507032064,3507034111,ZA
+3507034112,3507037183,US
3507037184,3507037439,DE
3507037440,3507055903,US
3507055904,3507055911,HK
@@ -162037,7 +171087,9 @@
3507428096,3507428351,GB
3507428352,3507430655,US
3507430656,3507430911,CA
-3507430912,3507433215,US
+3507430912,3507432191,US
+3507432192,3507432447,CA
+3507432448,3507433215,US
3507433216,3507433727,CA
3507433728,3507433983,US
3507433984,3507434239,CA
@@ -162118,9 +171170,7 @@
3508289024,3508289279,AU
3508289280,3508289535,US
3508289536,3508289791,CA
-3508289792,3508291583,US
-3508291584,3508291839,GB
-3508291840,3508292863,US
+3508289792,3508292863,US
3508292864,3508293119,DE
3508293120,3508293375,US
3508293376,3508293887,DE
@@ -162136,9 +171186,7 @@
3508299264,3508299519,GB
3508299520,3508299775,US
3508299776,3508300031,SE
-3508300032,3508310271,US
-3508310272,3508310527,SE
-3508310528,3508312831,US
+3508300032,3508312831,US
3508312832,3508313343,DE
3508313344,3508313855,US
3508313856,3508314111,GB
@@ -162152,19 +171200,16 @@
3508317952,3508318207,FI
3508318208,3508318463,US
3508318464,3508318719,LU
-3508318720,3508318975,IT
-3508318976,3508321023,US
+3508318720,3508321023,US
3508321024,3508321279,BE
3508321280,3508322559,US
3508322560,3508322815,FI
3508322816,3508323839,US
3508323840,3508324095,FI
3508324096,3508324351,IT
-3508324352,3508324607,US
-3508324608,3508324863,NO
+3508324352,3508324863,US
3508324864,3508325119,GB
-3508325120,3508326399,US
-3508326400,3508326655,GB
+3508325120,3508326655,US
3508326656,3508326911,ZA
3508326912,3508327167,US
3508327168,3508327679,ES
@@ -162178,14 +171223,11 @@
3508330752,3508331007,GB
3508331008,3508332031,US
3508332032,3508332287,GB
-3508332288,3508332543,GR
+3508332288,3508332543,US
3508332544,3508332799,IE
3508332800,3508333311,US
-3508333312,3508333823,CH
-3508333824,3508335359,US
-3508335360,3508335615,AU
-3508335616,3508335871,US
-3508335872,3508336127,JP
+3508333312,3508333567,CH
+3508333568,3508336127,US
3508336128,3508336383,SG
3508336384,3508336639,HK
3508336640,3508336895,US
@@ -162254,12 +171296,16 @@
3509522944,3509524479,US
3509524480,3509524735,CA
3509524736,3509524991,US
-3509524992,3509525759,CA
+3509524992,3509525247,CA
+3509525248,3509525503,US
+3509525504,3509525759,CA
3509525760,3509526527,US
3509526528,3509526783,CA
3509526784,3509529087,US
3509529088,3509529215,CA
-3509529216,3509532927,US
+3509529216,3509530623,US
+3509530624,3509532671,CA
+3509532672,3509532927,US
3509532928,3509533439,CA
3509533440,3509534719,US
3509534720,3509534975,CA
@@ -162273,9 +171319,7 @@
3509538560,3509538815,CA
3509538816,3509539071,US
3509539072,3509539327,CA
-3509539328,3509539967,US
-3509539968,3509540031,CA
-3509540032,3509540351,US
+3509539328,3509540351,US
3509540352,3509540863,CA
3509540864,3509541119,US
3509541120,3509541375,CA
@@ -162287,16 +171331,16 @@
3509544704,3509544959,CA
3509544960,3509546095,US
3509546096,3509546111,CA
-3509546112,3509546495,US
-3509546496,3509547007,CA
+3509546112,3509546751,US
+3509546752,3509547007,CA
3509547008,3509551615,US
3509551616,3509551871,CA
3509551872,3509552127,US
3509552128,3509552639,CA
3509552640,3509554943,US
3509554944,3509554959,CA
-3509554960,3509555711,US
-3509555712,3509556735,CA
+3509554960,3509555967,US
+3509555968,3509556735,CA
3509556736,3509557759,US
3509557760,3509558015,CA
3509558016,3509559039,US
@@ -162306,12 +171350,12 @@
3509560320,3509561343,US
3509561344,3509561599,CA
3509561600,3509561855,US
-3509561856,3509562623,CA
+3509561856,3509562111,CA
+3509562112,3509562367,US
+3509562368,3509562623,CA
3509562624,3509564415,US
3509564416,3509564671,CA
-3509564672,3509565439,US
-3509565440,3509565695,CA
-3509565696,3509567487,US
+3509564672,3509567487,US
3509567488,3509567743,CA
3509567744,3509567999,US
3509568000,3509568255,CA
@@ -162355,9 +171399,7 @@
3510245376,3510245631,BD
3510245632,3510249471,US
3510249472,3510249983,QA
-3510249984,3510253311,US
-3510253312,3510253567,NC
-3510253568,3510265087,US
+3510249984,3510265087,US
3510265088,3510265343,CA
3510265344,3510269951,US
3510269952,3510270719,LY
@@ -162373,8 +171415,12 @@
3510323200,3510324223,KN
3510324224,3510325247,AI
3510325248,3510326271,AG
-3510326272,3510327295,VG
-3510327296,3510328575,AG
+3510326272,3510326527,VG
+3510326528,3510326783,AG
+3510326784,3510327295,VG
+3510327296,3510328031,AG
+3510328032,3510328047,DM
+3510328048,3510328575,AG
3510328576,3510328831,MS
3510328832,3510329599,AG
3510329600,3510329855,MS
@@ -162383,8 +171429,10 @@
3510332416,3510332927,KN
3510332928,3510333183,LC
3510333184,3510333439,MS
-3510333440,3510335487,KN
-3510335488,3510336511,AI
+3510333440,3510333951,KN
+3510333952,3510334975,AG
+3510334976,3510335231,KN
+3510335232,3510336511,AI
3510336512,3510337279,AG
3510337280,3510337535,LC
3510337536,3510363647,US
@@ -162409,9 +171457,7 @@
3511156736,3511257855,US
3511257856,3511258111,CN
3511258112,3511812095,US
-3511812096,3511832575,CA
-3511832576,3511832831,US
-3511832832,3511844863,CA
+3511812096,3511844863,CA
3511844864,3512021503,US
3512021504,3512021759,GB
3512021760,3512043519,US
@@ -162424,8 +171470,7 @@
3512176128,3512176383,GB
3512176384,3512197119,US
3512197120,3512205311,CA
-3512205312,3512205567,US
-3512205568,3512205823,CL
+3512205312,3512205823,US
3512205824,3512206079,AW
3512206080,3512206591,US
3512206592,3512207103,HN
@@ -162476,7 +171521,19 @@
3512267264,3512268031,TG
3512268032,3512270847,US
3512270848,3512311167,CA
-3512311168,3512311295,US
+3512311168,3512311171,US
+3512311172,3512311175,CA
+3512311176,3512311179,US
+3512311180,3512311183,CA
+3512311184,3512311187,US
+3512311188,3512311191,CA
+3512311192,3512311195,US
+3512311196,3512311199,CA
+3512311200,3512311203,US
+3512311204,3512311204,CA
+3512311205,3512311205,US
+3512311206,3512311207,CA
+3512311208,3512311295,US
3512311296,3512336383,CA
3512336384,3512369151,US
3512369152,3512385535,CA
@@ -162603,8 +171660,8 @@
3514802984,3514808831,CA
3514808832,3514809855,US
3514809856,3514843135,CA
-3514843136,3514993919,US
-3514993920,3514993983,GB
+3514843136,3514993663,US
+3514993664,3514993983,GB
3514993984,3514993987,FR
3514993988,3514993991,DE
3514993992,3514994007,GB
@@ -162681,14 +171738,9 @@
3516899840,3516900031,NG
3516900032,3516900063,US
3516900064,3516900095,NG
-3516900096,3516900351,ZA
-3516900352,3516900607,US
+3516900096,3516900607,US
3516900608,3516900863,ZA
-3516900864,3516902399,US
-3516902400,3516902655,ZA
-3516902656,3516902911,US
-3516902912,3516903167,ZA
-3516903168,3516903423,US
+3516900864,3516903423,US
3516903424,3516907519,CA
3516907520,3517019135,US
3517019136,3517019391,HN
@@ -162702,6 +171754,7 @@
3517100032,3517112319,US
3517112320,3517120511,CA
3517120512,3517136895,US
+3517136896,3517145087,CA
3517145088,3517149951,US
3517149952,3517150207,CA
3517150208,3517233151,US
@@ -162716,8 +171769,8 @@
3517385472,3517385727,CA
3517385728,3517385983,US
3517385984,3517386239,CA
-3517386240,3517386495,US
-3517386496,3517387007,CA
+3517386240,3517386751,US
+3517386752,3517387007,CA
3517387008,3517388287,US
3517388288,3517388543,CA
3517388544,3517389311,US
@@ -162725,18 +171778,22 @@
3517389568,3517390079,US
3517390080,3517390335,CA
3517390336,3517390591,US
-3517390592,3517396991,CA
-3517396992,3517397247,US
+3517390592,3517391103,CA
+3517391104,3517391871,US
+3517391872,3517392127,CA
+3517392128,3517392383,US
+3517392384,3517392639,CA
+3517392640,3517395199,US
+3517395200,3517395455,CA
+3517395456,3517397247,US
3517397248,3517397503,CA
3517397504,3517397759,US
3517397760,3517398015,CA
3517398016,3517398527,US
-3517398528,3517399039,CA
-3517399040,3517399807,US
+3517398528,3517398783,CA
+3517398784,3517399807,US
3517399808,3517399871,CA
-3517399872,3517400063,US
-3517400064,3517400319,CA
-3517400320,3517401855,US
+3517399872,3517401855,US
3517401856,3517402111,CA
3517402112,3517405183,US
3517405184,3517405439,CA
@@ -162751,10 +171808,12 @@
3517409280,3517409791,US
3517409792,3517410303,CA
3517410304,3517411327,US
-3517411328,3517413375,CA
-3517413376,3517416919,US
-3517416920,3517416927,CA
-3517416928,3517416959,US
+3517411328,3517411583,CA
+3517411584,3517412095,US
+3517412096,3517412351,CA
+3517412352,3517412607,US
+3517412608,3517412863,CA
+3517412864,3517416959,US
3517416960,3517417215,CA
3517417216,3517418495,US
3517418496,3517418751,CA
@@ -162766,9 +171825,7 @@
3517423872,3517424127,CA
3517424128,3517424767,US
3517424768,3517424831,CA
-3517424832,3517425663,US
-3517425664,3517425919,CA
-3517425920,3517426751,US
+3517424832,3517426751,US
3517426752,3517426815,CA
3517426816,3517427199,US
3517427200,3517427455,CA
@@ -162811,12 +171868,8 @@
3517609744,3517644799,US
3517644800,3517710335,CA
3517710336,3517718527,US
-3517718528,3517720011,CA
-3517720012,3517720015,US
-3517720016,3517726719,CA
-3517726720,3517990911,US
-3517990912,3517991167,CA
-3517991168,3518058751,US
+3517718528,3517726719,CA
+3517726720,3518058751,US
3518058752,3518059007,CN
3518059008,3518059519,US
3518059520,3518059775,HK
@@ -162830,16 +171883,13 @@
3518075648,3518075903,AU
3518075904,3518076671,US
3518076672,3518076927,PA
-3518076928,3518374719,US
-3518374720,3518374783,IN
-3518374784,3518380223,US
+3518076928,3518380223,US
3518380224,3518380287,DE
3518380288,3518381055,US
3518381056,3518381311,IN
3518381312,3518381439,US
3518381440,3518381567,IN
-3518381568,3518381631,DE
-3518381632,3518392575,US
+3518381568,3518392575,US
3518392576,3518392831,NL
3518392832,3518393087,US
3518393088,3518393343,SG
@@ -162914,7 +171964,9 @@
3519883008,3519883263,US
3519883264,3519883519,CA
3519883520,3519884287,US
-3519884288,3519901695,CA
+3519884288,3519884543,CA
+3519884544,3519884799,US
+3519884800,3519901695,CA
3519901696,3519930367,US
3519934464,3519938559,CA
3519938560,3519938815,AT
@@ -162967,8 +172019,8 @@
3519948288,3519948799,DE
3519948800,3519967231,US
3519967232,3519969279,CA
-3519969280,3519970815,US
-3519970816,3519971327,CA
+3519969280,3519971071,US
+3519971072,3519971327,CA
3519971328,3520020479,US
3520020480,3520036863,CA
3520036864,3520192511,US
@@ -163136,7 +172188,8 @@
3523551232,3523553279,AU
3523553280,3523555327,MY
3523555328,3523557375,NZ
-3523557376,3523559423,HK
+3523557376,3523558399,HK
+3523558400,3523559423,CN
3523559424,3523575807,PH
3523575808,3523583999,CN
3523584000,3523597311,HK
@@ -163437,9 +172490,7 @@
3526934528,3526942719,CN
3526942720,3526950911,AU
3526950912,3526951935,MY
-3526951936,3526952959,JP
-3526952960,3526953983,ID
-3526953984,3526955007,JP
+3526951936,3526955007,JP
3526955008,3526955263,US
3526955264,3526956287,JP
3526956288,3526956799,HK
@@ -163535,14 +172586,14 @@
3534759392,3534759935,AU
3534759936,3534760447,US
3534760448,3534760959,NZ
-3534760960,3534761727,AU
+3534760960,3534761279,AU
+3534761280,3534761287,TW
+3534761288,3534761727,AU
3534761728,3534761983,JP
3534761984,3534784767,HK
3534784768,3534785023,TW
-3534785024,3534786559,HK
-3534786560,3534786575,MY
-3534786576,3534786576,HK
-3534786577,3534787327,MY
+3534785024,3534786815,HK
+3534786816,3534787327,MY
3534787328,3534787583,TH
3534787584,3534788463,HK
3534788464,3534788471,KR
@@ -163677,8 +172728,7 @@
3557023744,3557024895,GB
3557024896,3557025023,BE
3557025024,3557025791,GB
-3557025792,3557027839,NL
-3557027840,3557029887,BE
+3557025792,3557029887,BE
3557029888,3557031935,GB
3557031936,3557040127,IT
3557040128,3557048319,NO
@@ -163746,15 +172796,15 @@
3557359104,3557359615,MY
3557359616,3557360047,JE
3557360048,3557360055,GB
-3557360056,3557360127,JE
-3557360128,3557360135,GB
-3557360136,3557360263,JE
+3557360056,3557360263,JE
3557360264,3557360271,GB
3557360272,3557360743,JE
3557360744,3557360751,GB
3557360752,3557363583,JE
3557363584,3557363711,GB
-3557363712,3557367807,JE
+3557363712,3557364703,JE
+3557364704,3557364711,GB
+3557364712,3557367807,JE
3557367808,3557375999,DE
3557376000,3557384191,ES
3557384192,3557392383,GB
@@ -163808,11 +172858,13 @@
3557834752,3557842943,IR
3557842944,3557851135,FI
3557851136,3557859327,HU
-3557859328,3557861983,SE
-3557861984,3557862015,FI
-3557862016,3557863295,SE
-3557863296,3557863327,FI
-3557863328,3557863887,SE
+3557859328,3557861375,SE
+3557861376,3557861887,FI
+3557861888,3557861919,SE
+3557861920,3557862081,FI
+3557862082,3557862082,SE
+3557862083,3557863423,FI
+3557863424,3557863887,SE
3557863888,3557863903,NO
3557863904,3557863919,FI
3557863920,3557864311,SE
@@ -163858,7 +172910,8 @@
3558069248,3558080511,NL
3558080512,3558096895,RU
3558096896,3558113279,CZ
-3558113280,3558129663,DE
+3558113280,3558114303,GB
+3558114304,3558129663,DE
3558129664,3558137855,NO
3558137856,3558146047,GB
3558146048,3558154239,RU
@@ -163887,8 +172940,8 @@
3558203392,3558211583,ES
3558211584,3558219775,GB
3558219776,3558227967,ES
-3558227968,3558230015,RU
-3558230016,3558231039,PL
+3558227968,3558230271,RU
+3558230272,3558231039,PL
3558231040,3558231551,RU
3558231552,3558231807,SK
3558231808,3558232063,RU
@@ -163903,17 +172956,13 @@
3558273792,3558276095,GI
3558276096,3558276351,GB
3558276352,3558277119,GI
-3558277120,3558285951,GB
-3558285952,3558286079,DE
-3558286080,3558286335,GB
-3558286336,3558287359,FR
+3558277120,3558285311,GB
+3558285312,3558287359,FR
3558287360,3558289975,GB
3558289976,3558289983,CZ
3558289984,3558290831,GB
3558290832,3558290847,ES
-3558290848,3558291071,GB
-3558291072,3558291135,DE
-3558291136,3558292255,GB
+3558290848,3558292255,GB
3558292256,3558292271,SE
3558292272,3558293199,GB
3558293200,3558293215,NL
@@ -163938,11 +172987,9 @@
3558424576,3558440959,IL
3558440960,3558449151,SE
3558449152,3558457343,IT
-3558457344,3558457407,NL
-3558457408,3558457471,GB
-3558457472,3558457599,NL
-3558457600,3558457727,FR
-3558457728,3558465535,NL
+3558457344,3558461951,NL
+3558461952,3558462207,PL
+3558462208,3558465535,NL
3558465536,3558473727,GB
3558473728,3558506495,SA
3558506496,3558514687,UA
@@ -164015,8 +173062,7 @@
3558957056,3558965247,PS
3558965248,3558973439,NO
3558973440,3558981631,SA
-3558981632,3558982655,UA
-3558982656,3558989823,IR
+3558981632,3558989823,IR
3558989824,3558998015,RU
3558998016,3559006207,JO
3559006208,3559014399,RU
@@ -164029,17 +173075,12 @@
3559063552,3559079935,CH
3559079936,3559088127,JO
3559088128,3559090175,BE
-3559090176,3559090239,GB
-3559090240,3559090303,BE
-3559090304,3559091023,GB
-3559091024,3559091031,BE
-3559091032,3559092243,GB
+3559090176,3559092243,GB
3559092244,3559092244,BE
3559092245,3559093311,GB
3559093312,3559093319,BE
-3559093320,3559095455,GB
-3559095456,3559095456,BE
-3559095457,3559096319,GB
+3559093320,3559094271,GB
+3559094272,3559096319,BE
3559096320,3559104511,RO
3559104512,3559112703,RU
3559112704,3559120895,IT
@@ -164099,7 +173140,8 @@
3559309312,3559317503,PL
3559317504,3559325695,FI
3559325696,3559333887,IT
-3559333888,3559336447,SE
+3559333888,3559334143,DK
+3559334144,3559336447,SE
3559336448,3559336703,US
3559336704,3559342079,SE
3559342080,3559350271,BG
@@ -164164,7 +173206,9 @@
3559800832,3559809023,IT
3559809024,3559817215,DE
3559817216,3559825407,GB
-3559825408,3559833599,IT
+3559825408,3559829503,IT
+3559829504,3559830527,DE
+3559830528,3559833599,IT
3559833600,3559849983,RU
3559849984,3559858175,CZ
3559858176,3559866367,IT
@@ -164570,9 +173614,7 @@
3560941124,3560941127,FR
3560941128,3560941131,DE
3560941132,3560941135,GB
-3560941136,3560941147,DE
-3560941148,3560941151,IT
-3560941152,3560941155,DE
+3560941136,3560941155,DE
3560941156,3560941159,ES
3560941160,3560941175,DE
3560941176,3560941179,ES
@@ -164913,8 +173955,7 @@
3560943044,3560943047,DE
3560943048,3560943051,HR
3560943052,3560943055,CY
-3560943056,3560943059,BE
-3560943060,3560943075,DE
+3560943056,3560943075,DE
3560943076,3560943079,ES
3560943080,3560943110,DE
3560943111,3560943111,ES
@@ -166100,7 +175141,10 @@
3561078784,3561095167,CZ
3561095168,3561103359,DE
3561103360,3561111551,UA
-3561111552,3561119743,LU
+3561111552,3561112831,FR
+3561112832,3561113087,LU
+3561113088,3561113599,FR
+3561113600,3561119743,LU
3561119744,3561127935,IT
3561127936,3561136127,DE
3561136128,3561144319,ES
@@ -166151,9 +175195,7 @@
3561488384,3561496575,OM
3561496576,3561496831,GB
3561496832,3561497087,NL
-3561497088,3561497599,GB
-3561497600,3561498111,NL
-3561498112,3561498495,GB
+3561497088,3561498495,GB
3561498496,3561498559,NL
3561498560,3561502719,GB
3561502720,3561503743,NL
@@ -166187,7 +175229,9 @@
3561614848,3561615103,FR
3561615104,3561615359,GB
3561615360,3561617407,FR
-3561617408,3561618877,ES
+3561617408,3561617959,ES
+3561617960,3561617963,SE
+3561617964,3561618877,ES
3561618878,3561618878,PL
3561618879,3561619071,ES
3561619072,3561619072,GB
@@ -166212,7 +175256,9 @@
3561799680,3561807871,DE
3561807872,3561816063,BE
3561816064,3561824255,VA
-3561824256,3561832447,LI
+3561824256,3561831150,LI
+3561831151,3561831151,CH
+3561831152,3561832447,LI
3561832448,3561840639,IT
3561840640,3561848831,PL
3561848832,3561857023,RU
@@ -166224,30 +175270,29 @@
3561897984,3561906175,GB
3561906176,3561914367,DE
3561914368,3561922559,ES
-3561922560,3561924607,GB
-3561924608,3561925119,NL
+3561922560,3561925119,NL
3561925120,3561925343,GB
3561925344,3561925375,NL
3561925376,3561926655,GB
3561926656,3561927679,NL
-3561927680,3561929727,GB
-3561929728,3561930239,NL
-3561930240,3561930751,GB
+3561927680,3561929967,GB
+3561929968,3561929983,NL
+3561929984,3561930751,GB
3561930752,3561938943,NL
3561938944,3561947135,IE
3561947136,3561963519,DE
3561963520,3561971711,BE
3561971712,3561975807,CZ
-3561975808,3561979903,UA
+3561975808,3561976831,UA
+3561976832,3561977855,EE
+3561977856,3561979903,UA
3561979904,3561988095,ES
3561988096,3562012671,DE
3562012672,3562020863,IR
3562020864,3562029055,UA
3562029056,3562037247,CZ
3562037248,3562045439,CH
-3562045440,3562059391,ES
-3562059392,3562059519,CH
-3562059520,3562061823,ES
+3562045440,3562061823,ES
3562061824,3562062847,LT
3562062848,3562063871,UA
3562063872,3562064895,SE
@@ -166381,7 +175426,7 @@
3562695680,3562696703,UA
3562696704,3562697727,GB
3562697728,3562698751,MD
-3562698752,3562699775,DE
+3562698752,3562699775,US
3562699776,3562700799,UA
3562700800,3562708991,DE
3562708992,3562717183,UA
@@ -166439,7 +175484,9 @@
3563067392,3563068415,MZ
3563068416,3563069439,NG
3563069440,3563077631,HU
-3563077632,3563085823,KZ
+3563077632,3563083519,KZ
+3563083520,3563083647,RU
+3563083648,3563085823,KZ
3563085824,3563094015,RU
3563094016,3563102207,DE
3563102208,3563110399,CZ
@@ -166461,11 +175508,11 @@
3563257856,3563290623,FR
3563290624,3563315199,DE
3563315200,3563323391,DK
-3563323392,3563331583,GB
+3563323648,3563331583,GB
3563331584,3563339775,DE
3563339776,3563347967,NG
-3563347968,3563348991,GB
-3563348992,3563353087,FI
+3563347968,3563350015,GB
+3563350016,3563353087,FI
3563353088,3563356159,GB
3563356160,3563364351,RU
3563364352,3563372543,BE
@@ -166497,8 +175544,7 @@
3563533056,3563533311,RO
3563533312,3563534335,NL
3563534336,3563535359,TR
-3563535360,3563535871,DE
-3563535872,3563536127,US
+3563535360,3563536127,US
3563536128,3563536383,DE
3563536384,3563544575,CH
3563544576,3563552767,RU
@@ -166524,8 +175570,8 @@
3563749376,3563765759,PL
3563765760,3563782143,ES
3563782144,3563784191,TR
-3563784192,3563785215,DE
-3563785216,3563786239,GB
+3563784192,3563785727,DE
+3563785728,3563786239,GB
3563786240,3563787263,DE
3563787264,3563788287,SY
3563788288,3563789311,RU
@@ -166645,11 +175691,7 @@
3563978752,3563995135,IT
3563995136,3564003327,MK
3564003328,3564011519,DE
-3564011520,3564012543,UA
-3564012544,3564015615,RU
-3564015616,3564016639,UA
-3564016640,3564016895,RU
-3564016896,3564019711,UA
+3564011520,3564019711,UA
3564019712,3564027903,GB
3564027904,3564044287,DE
3564044288,3564052479,CZ
@@ -166744,7 +175786,11 @@
3564601344,3564609535,EE
3564609536,3564634111,RU
3564634112,3564642303,MK
-3564642304,3564650495,CH
+3564642304,3564647423,CH
+3564647424,3564648191,DE
+3564648192,3564648319,CH
+3564648320,3564648447,DE
+3564648448,3564650495,CH
3564650496,3564666879,NL
3564666880,3564675071,IE
3564675072,3564683263,RU
@@ -166810,8 +175856,7 @@
3564883080,3564883199,GB
3564883200,3564883455,NL
3564883456,3564883967,GB
-3564883968,3564884479,NL
-3564884480,3564886015,GB
+3564883968,3564886015,DE
3564886016,3564886527,NL
3564886528,3564886655,GB
3564886656,3564886783,NL
@@ -166821,8 +175866,7 @@
3564888995,3564889007,ES
3564889008,3564889633,GB
3564889634,3564889634,NL
-3564889635,3564891135,GB
-3564891136,3564891647,DE
+3564889635,3564891647,GB
3564891648,3564892159,IT
3564892160,3564895231,GB
3564895232,3564895743,NL
@@ -166887,8 +175931,7 @@
3565355008,3565420543,IT
3565420544,3565486335,GB
3565486336,3565486975,FR
-3565486976,3565487615,NL
-3565487616,3565495295,GB
+3565486976,3565495295,GB
3565495296,3565496319,FR
3565496320,3565502463,GB
3565502464,3565503487,NL
@@ -166946,9 +175989,7 @@
3567338624,3567338639,DE
3567338640,3567338943,GB
3567338944,3567338951,DE
-3567338952,3567340543,GB
-3567340544,3567341567,IT
-3567341568,3567344455,GB
+3567338952,3567344455,GB
3567344456,3567344479,ES
3567344480,3567350271,GB
3567350272,3567350527,ES
@@ -167008,11 +176049,11 @@
3567507288,3567516671,GB
3567516672,3567517695,ES
3567517696,3567583231,RU
-3567583232,3567584319,GB
-3567584320,3567584383,AT
-3567584384,3567584399,GB
+3567583232,3567584399,GB
3567584400,3567584407,AT
-3567584408,3567585279,GB
+3567584408,3567584767,GB
+3567584768,3567584775,AT
+3567584776,3567585279,GB
3567585280,3567585311,TR
3567585312,3567586303,GB
3567586304,3567586815,TR
@@ -167021,21 +176062,18 @@
3567599616,3567615999,NL
3567616000,3567616767,GB
3567616768,3567617023,US
-3567617024,3567618047,GB
-3567618048,3567619071,IN
-3567619072,3567619583,GB
+3567617024,3567619583,GB
3567619584,3567619839,NG
3567619840,3567620095,GB
3567620096,3567620351,IN
-3567620352,3567628287,GB
-3567628288,3567629311,LU
+3567620352,3567627263,GB
+3567627264,3567629311,LU
3567629312,3567630335,GB
-3567630336,3567634431,LU
-3567634432,3567636479,GB
+3567630336,3567632383,LU
+3567632384,3567636479,GB
3567636480,3567640575,LU
3567640576,3567644671,US
-3567644672,3567646719,LU
-3567646720,3567648767,GB
+3567644672,3567648767,GB
3567648768,3567665151,BE
3567665152,3567673343,ES
3567673344,3567681535,AT
@@ -167071,9 +176109,11 @@
3568959488,3569012991,AT
3569014272,3569025023,AT
3569025024,3569057791,NL
-3569057792,3569074175,GB
-3569074176,3569076223,IE
-3569076224,3569090559,GB
+3569057792,3569074687,GB
+3569074688,3569074943,IE
+3569074944,3569075455,GB
+3569075456,3569075711,IE
+3569075712,3569090559,GB
3569090560,3569123327,RU
3569123328,3569156095,GB
3569156096,3569188863,NL
@@ -167394,9 +176434,7 @@
3571515392,3571548159,GB
3571548160,3571580927,ES
3571580928,3571646463,FI
-3571646464,3571688383,DE
-3571688384,3571689215,ES
-3571689216,3571699711,DE
+3571646464,3571699711,DE
3571699712,3571700735,GB
3571700736,3571711999,DE
3571712000,3571843071,GB
@@ -167457,9 +176495,7 @@
3572760576,3572826111,PL
3572826112,3572891647,IT
3572891648,3572957183,FI
-3572957184,3573014527,SE
-3573014528,3573015551,KZ
-3573015552,3573022719,SE
+3572957184,3573022719,SE
3573022720,3573055487,RU
3573055488,3573088255,GB
3573088256,3573153791,CH
@@ -167469,9 +176505,7 @@
3573284864,3573415935,TR
3573415936,3573481471,CH
3573481472,3573547007,DE
-3573547008,3573549002,ES
-3573549003,3573549003,IT
-3573549004,3573612543,ES
+3573547008,3573612543,ES
3573612544,3573743615,GB
3573743616,3573809151,CH
3573809152,3573874687,ES
@@ -167523,8 +176557,7 @@
3574195200,3574196223,ES
3574196224,3574198271,GB
3574198272,3574199295,ES
-3574199296,3574200831,GB
-3574200832,3574202367,ES
+3574199296,3574202367,GB
3574202368,3574267903,NL
3574267904,3574333439,FR
3574333440,3574398975,GB
@@ -167582,7 +176615,9 @@
3575646848,3575646911,FR
3575646912,3575646975,PL
3575646976,3575647231,GB
-3575647232,3575647447,FR
+3575647232,3575647259,FR
+3575647260,3575647263,DE
+3575647264,3575647447,FR
3575647448,3575647451,PL
3575647452,3575647991,FR
3575647992,3575647995,NL
@@ -167763,23 +176798,19 @@
3576238464,3576238464,FR
3576238465,3576239103,GB
3576239104,3576239359,ES
-3576239360,3576241991,GB
-3576241992,3576241999,FR
-3576242000,3576246271,GB
+3576239360,3576246271,GB
3576246272,3576248319,FR
3576248320,3576248575,GB
3576248576,3576248625,AT
3576248626,3576248626,SK
3576248627,3576248831,AT
-3576248832,3576249343,GB
-3576249344,3576250367,FR
-3576250368,3576251711,GB
+3576248832,3576250367,GB
+3576250368,3576251391,FR
+3576251392,3576251711,GB
3576251712,3576251775,FR
3576251776,3576252415,GB
3576252416,3576254463,FR
-3576254464,3576254511,GB
-3576254512,3576254527,FR
-3576254528,3576254775,GB
+3576254464,3576254775,GB
3576254776,3576254783,FR
3576254784,3576254975,GB
3576254976,3576255303,FR
@@ -167791,20 +176822,18 @@
3576258048,3576258559,FR
3576258560,3576258927,GB
3576258928,3576258935,FR
-3576258936,3576259583,GB
-3576259584,3576260623,FR
+3576258936,3576260607,GB
+3576260608,3576260623,FR
3576260624,3576261631,GB
-3576261632,3576263679,FR
-3576263680,3576263807,GB
+3576261632,3576262655,FR
+3576262656,3576263807,GB
3576263808,3576263935,FR
3576263936,3576263975,GB
3576263976,3576263983,FR
3576263984,3576264255,GB
3576264256,3576264263,FR
3576264264,3576264703,GB
-3576264704,3576265215,FR
-3576265216,3576266751,GB
-3576266752,3576299519,FR
+3576264704,3576299519,FR
3576299520,3576365055,AE
3576365056,3576430591,TR
3576430592,3576496127,FR
@@ -167821,17 +176850,17 @@
3576889344,3576954879,NL
3576954880,3576987647,NO
3576987648,3576999935,GB
-3576999936,3577000191,NL
+3576999936,3577000191,AU
3577000192,3577003007,GB
3577003008,3577003519,NL
3577003520,3577020415,GB
3577020416,3577085951,NL
3577085952,3577151487,DE
-3577151488,3577151999,RE
-3577152000,3577152255,FR
-3577152256,3577159423,RE
-3577159424,3577159679,FR
-3577159680,3577166847,RE
+3577151488,3577154047,RE
+3577154048,3577154303,FR
+3577154304,3577165055,RE
+3577165056,3577165311,FR
+3577165312,3577166847,RE
3577166848,3577167871,FR
3577167872,3577184255,ET
3577184256,3577217023,CH
@@ -167848,9 +176877,7 @@
3577479168,3577544703,ES
3577544704,3577596527,DE
3577596528,3577596735,IT
-3577596736,3577596743,DE
-3577596744,3577596751,IT
-3577596752,3577596879,DE
+3577596736,3577596879,DE
3577596880,3577596895,IT
3577596896,3577610239,DE
3577626176,3577626239,GB
@@ -167859,7 +176886,7 @@
3577639744,3577639775,FR
3577639896,3577639899,FR
3577639920,3577639927,FR
-3577642496,3577642751,FR
+3577640960,3577643007,FR
3577650048,3577650063,NL
3577663488,3577664511,SE
3577669632,3577670655,BE
@@ -167895,9 +176922,7 @@
3579117568,3579183103,RU
3579183104,3579193343,GB
3579193344,3579193855,NL
-3579193856,3579194367,GB
-3579194368,3579195391,NL
-3579195392,3579197311,GB
+3579193856,3579197311,GB
3579197312,3579197439,US
3579197440,3579207359,GB
3579207360,3579207367,DE
@@ -167905,10 +176930,7 @@
3579209728,3579210751,DE
3579210752,3579216033,GB
3579216034,3579216034,DE
-3579216035,3579219967,GB
-3579219968,3579220223,DE
-3579220224,3579220479,BE
-3579220480,3579221935,GB
+3579216035,3579221935,GB
3579221936,3579221943,DE
3579221944,3579244831,GB
3579244832,3579244879,AT
@@ -168039,12 +177061,10 @@
3579772928,3579838463,DE
3579838464,3580039167,ES
3580039168,3580039423,IT
-3580039424,3580039519,ES
-3580039520,3580039551,NL
-3580039552,3580100607,ES
+3580039424,3580100607,ES
3580100608,3580102143,SE
-3580102144,3580104703,LV
-3580104704,3580106751,SE
+3580102144,3580103679,LV
+3580103680,3580106751,SE
3580106752,3580108799,LV
3580108800,3580112895,SE
3580112896,3580116991,LV
@@ -168081,13 +177101,9 @@
3580232448,3580233215,LT
3580233216,3580237823,SE
3580237824,3580239871,LV
-3580239872,3580243967,SE
-3580243968,3580244991,EE
-3580244992,3580246015,LT
+3580239872,3580246015,SE
3580246016,3580248063,LV
-3580248064,3580255231,SE
-3580255232,3580255487,LV
-3580255488,3580256255,SE
+3580248064,3580256255,SE
3580256256,3580259327,LV
3580259328,3580260351,SE
3580260352,3580265471,AT
@@ -168175,9 +177191,12 @@
3581204480,3581214719,SE
3581214720,3581231103,NL
3581239296,3581241343,NL
+3581255680,3581257727,FR
3581280256,3581411327,BE
3581411328,3581673471,GB
-3581673472,3581935615,NL
+3581673472,3581922303,NL
+3581922304,3581922559,SE
+3581922560,3581935615,NL
3581935616,3581943807,RU
3581943808,3581951999,FR
3581952000,3581960191,TR
@@ -168188,9 +177207,7 @@
3582001152,3582009343,DK
3582009344,3582017535,RU
3582017536,3582025727,GB
-3582025728,3582029823,RU
-3582029824,3582031871,CY
-3582031872,3582033919,RU
+3582025728,3582033919,RU
3582033920,3582042111,CZ
3582042112,3582050303,ES
3582050304,3582058495,NL
@@ -168225,8 +177242,7 @@
3582116864,3582117887,EE
3582117888,3582119935,SE
3582119936,3582120959,LT
-3582120960,3582121983,EE
-3582121984,3582124031,SE
+3582120960,3582124031,SE
3582124032,3582132223,FI
3582132224,3582140415,RU
3582140416,3582148607,GE
@@ -168304,8 +177320,8 @@
3582599168,3582607359,DE
3582607360,3582615551,RU
3582615552,3582623743,GB
-3582623744,3582623999,NO
-3582624000,3582631935,FI
+3582623744,3582624767,LT
+3582624768,3582631935,FI
3582631936,3582640127,NO
3582640128,3582646271,RU
3582646272,3582647295,IT
@@ -168387,7 +177403,9 @@
3583082496,3583090687,KG
3583090688,3583098879,NO
3583098880,3583107071,FI
-3583107072,3583115263,AT
+3583107072,3583111167,AT
+3583111168,3583112191,DE
+3583112192,3583115263,AT
3583115264,3583123455,CH
3583123456,3583131647,PL
3583131648,3583131709,DE
@@ -168438,9 +177456,9 @@
3583475712,3583483903,NO
3583483904,3583492095,FR
3583492096,3583508479,SK
-3583508480,3583513343,FR
-3583513344,3583513471,US
-3583513472,3583516671,FR
+3583508480,3583513407,FR
+3583513408,3583513439,US
+3583513440,3583516671,FR
3583516672,3583524863,GB
3583524864,3583533055,EG
3583533056,3583541247,DE
@@ -168468,7 +177486,7 @@
3583729664,3583737855,TR
3583739077,3583739077,GB
3583743616,3583743679,GB
-3583744000,3583744127,SE
+3583744112,3583744127,SE
3583744128,3583744255,PL
3583744320,3583744383,GB
3583744512,3583744767,GB
@@ -168519,7 +177537,9 @@
3584001024,3584004095,US
3584004096,3584008191,CH
3584008192,3584016383,SE
-3584016384,3584024575,RU
+3584016384,3584018431,RU
+3584018432,3584018943,CN
+3584018944,3584024575,RU
3584024576,3584032767,UA
3584032768,3584040959,DE
3584040960,3584049151,CH
@@ -168532,9 +177552,8 @@
3584096256,3584098303,NL
3584098304,3584106495,SI
3584106496,3584114687,FI
-3584114688,3584116991,GB
-3584116992,3584117247,NL
-3584117248,3584122879,GB
+3584114688,3584116735,US
+3584116736,3584122879,GB
3584122880,3584131071,PL
3584131072,3584139263,TR
3584139264,3584147455,NO
@@ -168573,20 +177592,16 @@
3584442368,3584443391,RU
3584443392,3584444415,NL
3584444416,3584445439,RU
-3584445440,3584446463,US
-3584446464,3584446719,RU
-3584446720,3584446975,KZ
-3584446976,3584447487,RU
+3584445440,3584445951,US
+3584445952,3584447487,RU
3584447488,3584448511,NL
3584448512,3584450047,RU
3584450048,3584450303,US
3584450304,3584450559,RU
3584458752,3584466943,SA
3584466944,3584467967,NO
-3584467968,3584468223,SE
-3584468224,3584468460,NO
-3584468461,3584468461,SE
-3584468462,3584475135,NO
+3584467968,3584468735,SE
+3584468736,3584475135,NO
3584475136,3584483327,FR
3584483328,3584491519,DE
3584491520,3584499711,BG
@@ -168621,11 +177636,7 @@
3584663552,3584671743,FR
3584671744,3584688127,NL
3584688128,3584696319,GB
-3584696320,3584701951,ES
-3584702000,3584702007,CH
-3584702208,3584703095,ES
-3584703096,3584703103,BE
-3584703104,3584704511,ES
+3584696320,3584704511,ES
3584704512,3584720895,RU
3584720896,3584729087,GB
3584729088,3584737279,DE
@@ -168685,15 +177696,9 @@
3585064960,3585081343,GB
3585081344,3585089535,IR
3585089536,3585090559,FI
-3585090560,3585091583,IR
-3585091584,3585092607,FI
-3585092608,3585093631,IR
-3585093632,3585094655,FI
-3585094656,3585095679,IR
+3585090560,3585095679,IR
3585095680,3585096703,FI
-3585096704,3585111039,IR
-3585111040,3585112063,BG
-3585112064,3585114111,IR
+3585096704,3585114111,IR
3585114112,3585122303,IS
3585122304,3585130495,ES
3585130496,3585138687,FR
@@ -168714,9 +177719,7 @@
3585269760,3585277951,SY
3585277952,3585286143,SE
3585286144,3585288959,NO
-3585288960,3585291007,GB
-3585291008,3585292543,NO
-3585292544,3585292863,GB
+3585288960,3585292863,GB
3585292864,3585292895,NO
3585292896,3585293263,GB
3585293264,3585293271,ZA
@@ -168913,8 +177916,8 @@
3585982464,3585998847,RU
3585998848,3585999871,CH
3585999872,3586000127,SG
-3586000128,3586000383,US
-3586000384,3586000895,DE
+3586000128,3586000639,US
+3586000640,3586000895,DE
3586000896,3586001919,ES
3586001920,3586002943,FR
3586002944,3586004479,GB
@@ -168942,7 +177945,9 @@
3586097152,3586105343,HR
3586105344,3586121727,BG
3586121728,3586129919,IE
-3586129920,3586146303,CZ
+3586129920,3586134015,CZ
+3586134016,3586136063,SK
+3586136064,3586146303,CZ
3586146304,3586162687,PL
3586162688,3586179071,FI
3586179072,3586195455,ES
@@ -169089,8 +178094,7 @@
3586927616,3586928127,AX
3586928128,3586928639,FI
3586928640,3586929663,AX
-3586929664,3586930687,FI
-3586930688,3586932735,AX
+3586929664,3586932735,FI
3586932736,3586949119,LB
3586949120,3586965503,SE
3586965504,3586981887,NL
@@ -169147,25 +178151,20 @@
3587227648,3587227648,NL
3587227649,3587231231,GB
3587231232,3587231263,NL
-3587231264,3587233087,GB
-3587233088,3587233095,NL
-3587233096,3587233279,GB
-3587233280,3587233791,NL
+3587231264,3587231743,GB
+3587231744,3587233791,NL
3587233792,3587234815,GB
3587234816,3587235071,DE
-3587235072,3587235839,GB
-3587235840,3587237887,NL
+3587235072,3587237631,GB
+3587237632,3587237887,NL
3587237888,3587239551,GB
3587239552,3587239552,NL
-3587239553,3587239791,GB
-3587239792,3587239799,NL
-3587239800,3587239807,GB
-3587239808,3587240959,NL
+3587239553,3587239679,GB
+3587239680,3587239839,NL
+3587239840,3587239935,GB
+3587239936,3587240959,NL
3587240960,3587241215,GB
-3587241216,3587242495,NL
-3587242496,3587242671,GB
-3587242672,3587242679,NL
-3587242680,3587244031,GB
+3587241216,3587244031,NL
3587244032,3587260415,IT
3587260416,3587281407,DE
3587281408,3587284991,RU
@@ -169187,8 +178186,8 @@
3587415552,3587415807,NL
3587415808,3587424255,BE
3587424256,3587440639,DE
-3587440640,3587443711,SE
-3587443712,3587444735,NO
+3587440640,3587443455,SE
+3587443456,3587444735,NO
3587444736,3587444991,SE
3587444992,3587445247,DK
3587445248,3587445759,SE
@@ -169201,7 +178200,9 @@
3587449088,3587449151,DK
3587449152,3587453351,SE
3587453352,3587453355,NO
-3587453356,3587457023,SE
+3587453356,3587454975,SE
+3587454976,3587455103,NO
+3587455104,3587457023,SE
3587457024,3587473407,GB
3587473408,3587489791,IT
3587489792,3587506175,EG
@@ -169239,7 +178240,8 @@
3587817472,3587833855,MT
3587833856,3587842047,DE
3587842048,3587850239,IT
-3587850240,3587854335,NL
+3587850240,3587852287,PL
+3587852288,3587854335,NL
3587854336,3587866623,PL
3587866624,3587874815,FR
3587874816,3587883007,DE
@@ -169258,12 +178260,14 @@
3588079616,3588095999,CH
3588096000,3588104191,NL
3588104192,3588112383,BG
-3588112384,3588128767,RE
+3588112384,3588112639,RE
+3588112640,3588112895,YT
+3588112896,3588128767,RE
3588128768,3588145151,HU
3588145152,3588153343,PL
3588153344,3588161535,RU
-3588161536,3588173055,FR
-3588173056,3588173567,RE
+3588161536,3588173311,FR
+3588173312,3588173567,RE
3588173568,3588173823,YT
3588173824,3588227071,FR
3588227072,3588292607,BE
@@ -169283,26 +178287,31 @@
3588382720,3588383743,ES
3588383744,3588384767,RU
3588384768,3588385791,IT
-3588385792,3588386815,NL
-3588386816,3588387839,RU
+3588385792,3588387839,NL
3588387840,3588388863,TR
3588388864,3588390911,RU
-3588390912,3588393983,LT
-3588393984,3588395007,LV
+3588390912,3588392959,LT
+3588392960,3588395007,LV
3588395008,3588407295,LT
3588407296,3588423679,CZ
3588423680,3588440063,ES
3588440064,3588456447,PL
3588456448,3588464639,NL
-3588464640,3588465151,AT
+3588464640,3588464895,AT
+3588464896,3588465151,DE
3588465152,3588465663,FR
3588465664,3588466431,AT
3588466432,3588466687,AU
3588466688,3588467199,DE
3588467200,3588467455,JP
-3588467456,3588468479,AT
-3588468480,3588468735,AE
-3588468736,3588472831,AT
+3588467456,3588467967,DE
+3588467968,3588468223,US
+3588468224,3588470015,AT
+3588470016,3588470271,IL
+3588470272,3588470783,AT
+3588470784,3588471039,IN
+3588471040,3588471295,SE
+3588471296,3588472831,AT
3588472832,3588489215,UA
3588489216,3588505599,FR
3588505600,3588521983,RU
@@ -169312,13 +178321,9 @@
3588554240,3588554751,GB
3588554752,3588571135,AT
3588571136,3588587519,GB
-3588587520,3588590591,ES
-3588590592,3588590847,FR
-3588590848,3588592543,ES
+3588587520,3588592543,ES
3588592544,3588592551,IE
-3588592552,3588595199,ES
-3588595200,3588595455,FR
-3588595456,3588603903,ES
+3588592552,3588603903,ES
3588603904,3588620287,SI
3588620288,3588628479,SA
3588628480,3588636671,CH
@@ -169387,13 +178392,17 @@
3589031057,3589043455,GB
3589043456,3589043711,NL
3589043712,3589046271,GB
-3589046272,3589079039,NO
+3589046272,3589050425,NO
+3589050426,3589050426,IT
+3589050427,3589079039,NO
3589079040,3589128191,DK
3589128192,3589144575,GB
3589144576,3589152767,CH
3589152768,3589160959,DE
3589160960,3589177343,PL
-3589177344,3589193727,TR
+3589177344,3589186559,TR
+3589186560,3589186815,DE
+3589186816,3589193727,TR
3589193728,3589210111,SE
3589210112,3589226495,NL
3589226496,3589242879,NO
@@ -169417,8 +178426,8 @@
3589431328,3589431343,GB
3589431344,3589431359,ES
3589431360,3589432831,GB
-3589432832,3589433087,FR
-3589433088,3589435759,GB
+3589432832,3589433343,FR
+3589433344,3589435759,GB
3589435760,3589435763,ES
3589435764,3589437439,GB
3589437440,3589439487,FR
@@ -169435,13 +178444,13 @@
3589571584,3589571839,NL
3589571840,3589572735,GB
3589572736,3589572863,NL
-3589572864,3589580799,GB
+3589572864,3589573375,GB
+3589573376,3589573376,NO
+3589573377,3589580799,GB
3589580800,3589581311,NL
3589581312,3589582719,GB
3589582720,3589582847,NL
-3589582848,3589582975,GB
-3589582976,3589583103,NL
-3589583104,3589586943,GB
+3589582848,3589586943,GB
3589586944,3589587199,DE
3589587200,3589587455,NL
3589587456,3589587967,CH
@@ -169453,9 +178462,7 @@
3589668864,3589677055,YE
3589677056,3589685247,FR
3589685248,3589718015,GB
-3589718016,3589722023,BE
-3589722024,3589722031,FR
-3589722032,3589734399,BE
+3589718016,3589734399,BE
3589734400,3589742591,ZA
3589742592,3589746175,NL
3589746176,3589746687,US
@@ -169483,7 +178490,9 @@
3589881856,3589890047,NL
3589890048,3589891839,GB
3589891840,3589891967,BE
-3589891968,3589931007,GB
+3589891968,3589892095,GB
+3589892096,3589894143,ES
+3589894144,3589931007,GB
3589931008,3589947391,SI
3589947392,3589963775,FI
3589963776,3589980159,ES
@@ -169534,9 +178543,7 @@
3590062080,3590078463,DE
3590078464,3590094847,RU
3590094848,3590111231,DE
-3590111232,3590112767,LT
-3590112768,3590113279,LV
-3590113280,3590127615,LT
+3590111232,3590127615,LT
3590127616,3590143999,GB
3590144000,3590156287,SI
3590156288,3590157311,HR
@@ -169573,9 +178580,7 @@
3590247712,3590247743,HK
3590247744,3590248447,IE
3590248448,3590249471,DE
-3590249472,3590253567,IE
-3590253568,3590253823,FR
-3590253824,3590254367,IE
+3590249472,3590254367,IE
3590254368,3590254375,IT
3590254376,3590254854,IE
3590254855,3590254855,GB
@@ -169655,13 +178660,13 @@
3625058304,3625091071,CA
3625091072,3625102847,US
3625102848,3625103103,NL
-3625103104,3625116927,US
-3625116928,3625117183,SE
-3625117184,3625140223,US
+3625103104,3625140223,US
3625140224,3625148415,CA
3625148416,3625168895,US
3625168896,3625172991,CA
-3625172992,3625255935,US
+3625172992,3625242623,US
+3625242624,3625246719,CA
+3625246720,3625255935,US
3625256960,3625257471,US
3625257472,3625257983,CA
3625257984,3625287679,US
@@ -169671,9 +178676,7 @@
3625346304,3625418751,US
3625418752,3625420031,CA
3625420032,3625420543,US
-3625420544,3625422591,CA
-3625422592,3625423103,US
-3625423104,3625426943,CA
+3625420544,3625426943,CA
3625426944,3625508863,US
3625508864,3625512959,CA
3625512960,3625517055,US
@@ -169728,9 +178731,7 @@
3625578496,3625582591,CA
3625582592,3625631743,US
3625631744,3625639935,CA
-3625639936,3625961471,US
-3625961472,3625963519,GB
-3625963520,3626091519,US
+3625639936,3626091519,US
3626091520,3626092031,AR
3626092032,3626233655,US
3626233656,3626233663,GB
@@ -169786,9 +178787,7 @@
3627749376,3627749631,BR
3627749632,3627750655,US
3627750656,3627750911,BR
-3627750912,3627753471,US
-3627753472,3627753727,AR
-3627753728,3627760127,US
+3627750912,3627760127,US
3627760128,3627760383,NL
3627760384,3627760895,US
3627760896,3627761151,SG
@@ -169806,9 +178805,7 @@
3628141312,3628145407,CA
3628145408,3628145919,US
3628145920,3628146175,AU
-3628146176,3628147199,CA
-3628147200,3628147455,US
-3628147456,3628149503,CA
+3628146176,3628149503,CA
3628149504,3628149759,US
3628149760,3628150783,CA
3628150784,3628151039,US
@@ -169898,8 +178895,7 @@
3628637184,3628637695,CO
3628637696,3628638207,US
3628638208,3628646399,CL
-3628646400,3628647423,US
-3628647424,3628647679,SZ
+3628646400,3628647679,US
3628647680,3628648959,CO
3628648960,3628649215,US
3628649216,3628649727,CO
@@ -169972,9 +178968,7 @@
3629789952,3629790207,CA
3629790208,3629839103,US
3629839104,3629839359,CA
-3629839360,3630040063,US
-3630040064,3630040319,CA
-3630040320,3630040431,US
+3629839360,3630040431,US
3630040432,3630040447,CA
3630040448,3630040575,US
3630040576,3630040831,CA
@@ -170012,8 +179006,8 @@
3630061568,3630062079,CA
3630062080,3630062335,US
3630062336,3630062591,CA
-3630062592,3630062847,US
-3630062848,3630063359,CA
+3630062592,3630063103,US
+3630063104,3630063359,CA
3630063360,3630063615,US
3630063616,3630063871,CA
3630063872,3630066431,US
@@ -170105,9 +179099,7 @@
3630905600,3630905855,CA
3630905856,3630956543,US
3630956544,3631005695,CA
-3631005696,3631017983,US
-3631017984,3631022079,HK
-3631022080,3631098263,US
+3631005696,3631098263,US
3631098264,3631098271,FR
3631098272,3631112191,US
3631112192,3631112703,VC
@@ -170252,18 +179244,11 @@
3633569280,3633569535,CA
3633569536,3633709055,US
3633709056,3633717247,CA
-3633717248,3633756671,US
-3633756672,3633756677,BG
-3633756678,3633756678,US
-3633756679,3633756679,BG
-3633756680,3633756680,US
-3633756681,3633757183,BG
-3633757184,3633757439,US
+3633717248,3633757439,US
3633757440,3633757695,IN
3633757696,3633757951,US
3633757952,3633758207,PH
-3633758208,3633783039,US
-3633783296,3633783551,US
+3633758208,3633783551,US
3633783552,3633783807,CA
3633783808,3633821695,US
3633821696,3633821951,CA
@@ -170311,11 +179296,13 @@
3634257920,3634262015,SE
3634262016,3634286079,US
3634286080,3634286335,AL
-3634286336,3634288127,US
+3634286336,3634286591,IT
+3634286592,3634288127,US
3634288128,3634288383,BD
3634288384,3634289407,US
3634289408,3634289663,BG
-3634289664,3634506495,US
+3634289664,3634289919,IT
+3634289920,3634506495,US
3634506496,3634506751,CA
3634506752,3634507263,US
3634507264,3634507519,RU
@@ -170331,7 +179318,9 @@
3634759936,3634880511,US
3634880512,3634888703,CA
3634888704,3634913279,US
-3634913280,3634921471,CA
+3634913280,3634915663,CA
+3634915664,3634915679,US
+3634915680,3634921471,CA
3634921472,3634925567,US
3634925568,3634929663,CA
3634929664,3635051103,US
@@ -170347,7 +179336,9 @@
3635159040,3635163135,CA
3635163136,3635167231,US
3635167232,3635167487,GB
-3635167488,3635171071,NL
+3635167488,3635170303,NL
+3635170304,3635170559,FR
+3635170560,3635171071,NL
3635171072,3635171327,CA
3635171328,3635187967,US
3635187968,3635188223,CN
@@ -170368,9 +179359,7 @@
3635645184,3635645439,US
3635645440,3635645951,HK
3635645952,3635646463,TL
-3635646464,3635646975,US
-3635646976,3635647487,GB
-3635647488,3635647743,US
+3635646464,3635647743,US
3635647744,3635647999,CA
3635648000,3635650559,US
3635650560,3635651583,HK
@@ -170378,9 +179367,16 @@
3635659264,3635660287,ID
3635660288,3635670527,US
3635670528,3635671039,TL
-3635671040,3635701759,US
+3635671040,3635691519,US
+3635691520,3635695615,CA
+3635695616,3635699711,US
+3635699712,3635701759,CA
3635701760,3635702015,DE
-3635702016,3635740671,US
+3635702016,3635704063,US
+3635704064,3635704319,CA
+3635704320,3635704831,US
+3635704832,3635705855,CA
+3635705856,3635740671,US
3635740672,3635740927,CA
3635740928,3635741439,US
3635741440,3635741695,CA
@@ -170436,8 +179432,8 @@
3636150272,3636150527,CA
3636150528,3636150783,US
3636150784,3636156415,CA
-3636156416,3636156927,US
-3636156928,3636157119,CA
+3636156416,3636156671,US
+3636156672,3636157119,CA
3636157120,3636157151,US
3636157152,3636157183,CA
3636157184,3636157439,US
@@ -170445,8 +179441,8 @@
3636162560,3636163071,US
3636163072,3636163327,CA
3636163328,3636163583,US
-3636163584,3636164607,CA
-3636164608,3636165119,US
+3636163584,3636164863,CA
+3636164864,3636165119,US
3636165120,3636165631,CA
3636165632,3636165887,US
3636165888,3636166655,CA
@@ -170456,9 +179452,7 @@
3636396032,3636430335,CA
3636430336,3636430591,KY
3636430592,3636461567,CA
-3636461568,3636596735,US
-3636596736,3636597119,CA
-3636597120,3636609023,US
+3636461568,3636609023,US
3636609024,3636621311,CA
3636621312,3636625407,US
3636625408,3636626431,AR
@@ -170540,11 +179534,13 @@
3638250560,3638250623,GB
3638250624,3638304767,US
3638304768,3638312959,CA
-3638312960,3638366207,US
+3638312960,3638370303,US
3638370304,3638386687,CA
3638386688,3638401087,US
3638401088,3638401119,CA
-3638401120,3638509567,US
+3638401120,3638401151,US
+3638401152,3638401279,CA
+3638401280,3638509567,US
3638509568,3638534143,CA
3638534144,3638697983,US
3638697984,3638706175,CA
@@ -170584,9 +179580,7 @@
3639397376,3639398527,US
3639398528,3639398591,SA
3639398592,3639398599,LB
-3639398600,3639398655,US
-3639398656,3639398663,SA
-3639398664,3639399679,US
+3639398600,3639399679,US
3639399680,3639399935,HN
3639399936,3639400447,US
3639400448,3639401471,RS
@@ -170629,9 +179623,7 @@
3639593984,3639595007,GB
3639595008,3639607295,US
3639607296,3639611391,CA
-3639611392,3639638015,US
-3639638016,3639640063,CA
-3639640064,3639664639,US
+3639611392,3639664639,US
3639664640,3639668735,CA
3639668736,3639672831,US
3639672832,3639681023,CL
@@ -170649,10 +179641,8 @@
3639736832,3639737343,US
3639737344,3639737373,GB
3639737374,3639737374,FR
-3639737375,3639737599,GB
-3639737600,3639737629,US
-3639737630,3639737630,GB
-3639737631,3639887815,US
+3639737375,3639737855,GB
+3639737856,3639887815,US
3639887816,3639887831,CA
3639887832,3639888351,US
3639888352,3639888359,CA
@@ -170810,7 +179800,11 @@
3640318208,3640318719,NC
3640318720,3640346879,US
3640346880,3640347134,MX
-3640347135,3640360959,US
+3640347135,3640348671,US
+3640348672,3640349183,MX
+3640349184,3640349695,US
+3640349696,3640350719,MX
+3640350720,3640360959,US
3640360960,3640369151,CA
3640369152,3640410111,US
3640410112,3640418303,CA
@@ -170824,7 +179818,7 @@
3640446976,3640449023,CA
3640449024,3640450047,DE
3640450048,3640451071,US
-3640451072,3640459263,DE
+3640451072,3640459263,CH
3640459264,3640557567,US
3640557568,3640582143,CA
3640582144,3640647679,US
@@ -170999,6 +179993,10 @@
3641876480,3641880575,ES
3641880576,3641884671,DE
3641884672,3641888767,NO
+3641888768,3641889791,TR
+3641889792,3641890815,GB
+3641890816,3641891839,UA
+3641891840,3641892863,FR
3641892864,3641896959,ES
3641896960,3641901055,BG
3641901056,3641901311,RO
@@ -171135,7 +180133,7 @@
3642310656,3642314751,DE
3642314752,3642318847,RU
3642318848,3642322943,FI
-3642324480,3642324991,AT
+3642322944,3642324991,AT
3642327040,3642331135,DE
3642331136,3642335231,RU
3642335232,3642339327,DE
@@ -171367,8 +180365,7 @@
3645145088,3645149183,GB
3645149184,3645161471,DE
3645161472,3645163519,AT
-3645163520,3645164031,GB
-3645164032,3645165567,AT
+3645163520,3645165567,GB
3645165568,3645169663,TR
3645169664,3645173759,CH
3645173760,3645177855,GB
@@ -171438,7 +180435,8 @@
3645423616,3645431807,DE
3645431808,3645435903,BE
3645435904,3645439999,GB
-3645440000,3645444095,SE
+3645440000,3645442047,SE
+3645442048,3645444095,GB
3645444096,3645448191,SK
3645448192,3645450239,DE
3645450240,3645452287,GB
@@ -171469,9 +180467,7 @@
3645546496,3645550591,RU
3645550592,3645558783,DE
3645558784,3645562879,DK
-3645562880,3645563135,GB
-3645563136,3645564671,LS
-3645564672,3645565951,GB
+3645562880,3645565951,GB
3645565952,3645566975,ZW
3645566976,3645571071,RU
3645571072,3645575167,IE
@@ -171494,37 +180490,13 @@
3645657088,3645661183,SE
3645661184,3645665279,DE
3645665280,3645669375,PL
-3645669376,3645669599,ES
-3645669600,3645669887,PT
-3645669888,3645670399,ES
-3645670400,3645670427,PT
-3645670428,3645670429,ES
-3645670430,3645670430,PT
-3645670431,3645670433,ES
-3645670434,3645670436,PT
-3645670437,3645670441,ES
-3645670442,3645670456,PT
-3645670457,3645670460,ES
-3645670461,3645670467,PT
-3645670468,3645670483,ES
-3645670484,3645670508,PT
-3645670509,3645670509,ES
-3645670510,3645670527,PT
-3645670528,3645670655,ES
-3645670656,3645670911,PT
+3645669376,3645670060,PT
+3645670061,3645670061,ES
+3645670062,3645670911,PT
3645670912,3645673471,ES
3645673472,3645673535,PT
3645673536,3645674239,ES
-3645674240,3645674271,PT
-3645674272,3645675007,ES
-3645675008,3645675519,PT
-3645675520,3645675759,ES
-3645675760,3645675775,PT
-3645675776,3645676015,ES
-3645676016,3645676031,PT
-3645676032,3645676543,ES
-3645676544,3645676799,PT
-3645676800,3645677567,ES
+3645674240,3645677567,PT
3645677568,3645681663,AT
3645681664,3645685759,RU
3645685760,3645689855,UA
@@ -171931,7 +180903,7 @@
3645764155,3645764155,ES
3645764156,3645764158,DE
3645764159,3645764159,IT
-3645764160,3645764160,BE
+3645764160,3645764160,DE
3645764161,3645764161,ES
3645764162,3645764162,DE
3645764163,3645764163,NL
@@ -172110,8 +181082,8 @@
3645764392,3645764392,GR
3645764393,3645764393,DE
3645764394,3645764394,FR
-3645764395,3645764396,NL
-3645764397,3645764397,DE
+3645764395,3645764395,NL
+3645764396,3645764397,DE
3645764398,3645764398,NL
3645764399,3645764399,DE
3645764400,3645764401,NL
@@ -172368,9 +181340,7 @@
3645849600,3645857791,BG
3645857792,3645865983,GB
3645865984,3645870079,HU
-3645870080,3645872234,PL
-3645872235,3645872235,DE
-3645872236,3645874175,PL
+3645870080,3645874175,PL
3645874176,3645878271,GB
3645878272,3645882367,DE
3645882368,3645886463,CH
@@ -172384,13 +181354,9 @@
3647209472,3647602687,NL
3647602688,3647733759,RU
3647733760,3647864831,FR
-3647864832,3647916799,DE
-3647916800,3647917055,SE
-3647917056,3647947727,DE
+3647864832,3647947727,DE
3647947728,3647947735,GB
-3647947736,3647964159,DE
-3647964160,3647964287,ES
-3647964288,3647965255,DE
+3647947736,3647965255,DE
3647965256,3647965263,ES
3647965264,3647965695,DE
3647965696,3647966207,CH
@@ -172401,9 +181367,9 @@
3647968256,3647969279,FR
3647969280,3647969327,DE
3647969328,3647969335,IT
-3647969336,3647970123,DE
-3647970124,3647970124,BE
-3647970125,3647971327,DE
+3647969336,3647969791,DE
+3647969792,3647970303,BE
+3647970304,3647971327,DE
3647971328,3647973375,GB
3647973376,3647973615,DE
3647973616,3647973623,IT
@@ -172426,11 +181392,12 @@
3647980032,3647980383,DE
3647980384,3647980415,FR
3647980416,3647980543,DE
-3647980544,3647982079,GB
-3647982080,3647982591,BE
-3647982592,3647983615,IT
+3647980544,3647981567,GB
+3647981568,3647982591,BE
+3647982592,3647983615,DE
3647983616,3647984639,NL
-3647984640,3647985663,BE
+3647984640,3647985407,DE
+3647985408,3647985663,BE
3647985664,3647986687,ES
3647986688,3647987647,DE
3647987648,3647987655,ES
@@ -172438,8 +181405,7 @@
3647987712,3647988735,IT
3647988736,3647989759,DE
3647989760,3647991807,ES
-3647991808,3647993855,DE
-3647993856,3647995903,BE
+3647991808,3647995903,DE
3647995904,3648004095,RU
3648004096,3648004837,GB
3648004838,3648004838,RU
@@ -172544,7 +181510,8 @@
3648397312,3648405503,NO
3648405504,3648413695,RU
3648413696,3648417791,SK
-3648417792,3648425983,GB
+3648417792,3648418303,ES
+3648418304,3648425983,GB
3648425984,3648430079,IT
3648430080,3648434175,NL
3648434176,3648438271,RU
@@ -172566,8 +181533,7 @@
3648499712,3648503807,FR
3648503808,3648511999,DE
3648512000,3648516095,NL
-3648516096,3648519423,RS
-3648519424,3648520191,MK
+3648516096,3648520191,RS
3648520192,3648745820,NL
3648745821,3648745821,US
3648745822,3648747227,NL
@@ -172592,18 +181558,14 @@
3649568768,3649634303,BE
3649634304,3649765375,GB
3649765376,3649830911,EG
-3649830912,3649835007,NL
-3649835008,3649837055,ES
-3649837056,3649839103,NL
-3649839104,3649840127,GB
-3649840128,3649841151,NL
-3649841152,3649843199,GB
+3649830912,3649842175,NL
+3649842176,3649843199,GB
3649843200,3649847817,NL
3649847818,3649855487,DE
-3649855488,3649857535,US
-3649857536,3649857791,GB
+3649855488,3649857791,GB
3649857792,3649858047,IN
-3649858048,3649859583,GB
+3649858048,3649858559,GB
+3649858560,3649859583,US
3649859584,3649863679,SE
3649863680,3649896447,FI
3649896448,3649961983,IT
@@ -172644,7 +181606,7 @@
3650224128,3650224383,TH
3650224384,3650224639,ES
3650224640,3650224895,UA
-3650224896,3650225151,FR
+3650224896,3650225151,DE
3650225152,3650225407,HU
3650225408,3650225663,BR
3650225664,3650226175,TR
@@ -172653,16 +181615,16 @@
3650226688,3650227455,IN
3650227456,3650227711,PL
3650227712,3650227967,PT
-3650227968,3650229247,AT
+3650227968,3650228223,AR
+3650228224,3650228479,HK
+3650228480,3650229247,AT
3650229248,3650229503,DE
3650229504,3650229759,LU
3650229760,3650230527,DE
3650230528,3650231295,AT
3650231296,3650231551,AR
3650231552,3650231807,GB
-3650231808,3650231967,DE
-3650231968,3650231999,AT
-3650232000,3650232063,DE
+3650231808,3650232063,DE
3650232064,3650232319,SE
3650232320,3650233343,RU
3650233344,3650233599,CY
@@ -172686,8 +181648,7 @@
3650301952,3650306047,DE
3650306048,3650314239,GB
3650314240,3650318335,DE
-3650318336,3650321407,GI
-3650321408,3650322431,IE
+3650318336,3650322431,GI
3650322432,3650330623,IT
3650330624,3650333695,UA
3650333696,3650333951,PL
@@ -172707,7 +181668,9 @@
3650371584,3650375679,ES
3650375680,3650379775,NL
3650379776,3650381823,DE
-3650381824,3650387967,IT
+3650381824,3650382847,IT
+3650382848,3650383871,DE
+3650383872,3650387967,IT
3650387968,3650388991,DE
3650388992,3650390015,NL
3650390016,3650391039,ES
@@ -172771,9 +181734,28 @@
3650879488,3650912255,RO
3650912256,3650914311,GB
3650914312,3650914319,IT
-3650914320,3650916393,GB
+3650914320,3650915943,GB
+3650915944,3650915959,BE
+3650915960,3650916393,GB
3650916394,3650916394,FR
-3650916395,3650919807,GB
+3650916395,3650916463,GB
+3650916464,3650916479,RS
+3650916480,3650916551,GB
+3650916552,3650916559,NO
+3650916560,3650916567,CZ
+3650916568,3650916575,GB
+3650916576,3650916583,IL
+3650916584,3650916591,GB
+3650916592,3650916599,LT
+3650916600,3650917471,GB
+3650917472,3650917479,ES
+3650917480,3650917487,GB
+3650917488,3650917503,RO
+3650917504,3650918703,GB
+3650918704,3650918711,FR
+3650918712,3650918767,GB
+3650918768,3650918775,LV
+3650918776,3650919807,GB
3650919808,3650919823,BG
3650919824,3650920895,GB
3650920896,3650920927,GR
@@ -172785,9 +181767,15 @@
3650921512,3650921519,FR
3650921520,3650922799,GB
3650922800,3650922815,FR
-3650922816,3650926591,GB
-3650926592,3650929663,ES
-3650929664,3650929831,GB
+3650922816,3650923431,GB
+3650923432,3650923439,FR
+3650923440,3650923815,GB
+3650923816,3650923823,DE
+3650923824,3650924023,GB
+3650924024,3650924031,LV
+3650924032,3650926591,GB
+3650926592,3650928639,ES
+3650928640,3650929831,GB
3650929832,3650929839,DK
3650929840,3650929847,BE
3650929848,3650929855,FR
@@ -172799,15 +181787,41 @@
3650929896,3650929903,ES
3650929904,3650929911,SE
3650929912,3650929919,CH
-3650929920,3650932881,GB
+3650929920,3650931135,GB
+3650931136,3650931143,RU
+3650931144,3650931519,GB
+3650931520,3650931527,AT
+3650931528,3650932881,GB
3650932882,3650932882,DE
-3650932883,3650932943,GB
+3650932883,3650932887,GB
+3650932888,3650932895,HU
+3650932896,3650932943,GB
3650932944,3650932975,IT
3650932976,3650932983,GB
3650932984,3650932991,BE
-3650932992,3650939607,GB
+3650932992,3650935951,GB
+3650935952,3650935967,HR
+3650935968,3650939607,GB
3650939608,3650939615,TR
-3650939616,3650945023,GB
+3650939616,3650940623,GB
+3650940624,3650940631,LT
+3650940632,3650940639,GB
+3650940640,3650940655,EE
+3650940656,3650944071,GB
+3650944072,3650944087,SA
+3650944088,3650944095,CZ
+3650944096,3650944151,GB
+3650944152,3650944167,RU
+3650944168,3650944191,GB
+3650944192,3650944199,FI
+3650944200,3650944247,GB
+3650944248,3650944255,FI
+3650944256,3650944863,GB
+3650944864,3650944871,HU
+3650944872,3650944879,JO
+3650944880,3650944887,GB
+3650944888,3650944895,NO
+3650944896,3650945023,GB
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651108863,DE
@@ -172823,17 +181837,13 @@
3651193344,3651207167,DE
3651207168,3651209215,GB
3651209216,3651209231,US
-3651209232,3651211263,GB
-3651211264,3651211519,IR
-3651211520,3651213823,GB
+3651209232,3651213823,GB
3651213824,3651214207,US
3651214208,3651219455,GB
3651219456,3651219967,US
3651219968,3651223551,GB
3651239936,3651272703,GB
-3651272704,3651297023,CH
-3651297024,3651297151,DE
-3651297152,3651338239,CH
+3651272704,3651338239,CH
3651338240,3651344127,GB
3651344128,3651344383,DE
3651344384,3651345407,GB
@@ -172964,8 +181974,11 @@
3652165632,3652167679,FR
3652167680,3652168703,GP
3652168704,3652169727,FR
-3652169728,3652172799,MQ
-3652172800,3652173823,FR
+3652169728,3652170495,MQ
+3652170496,3652170623,FR
+3652170624,3652171007,MQ
+3652171008,3652171263,FR
+3652171264,3652173823,MQ
3652173824,3652177919,AT
3652177920,3652182015,CY
3652182016,3652186111,DE
@@ -173069,7 +182082,11 @@
3652597376,3652597383,ES
3652597384,3652597407,FR
3652597408,3652597439,PL
-3652597440,3652597887,FR
+3652597440,3652597587,FR
+3652597588,3652597591,GB
+3652597592,3652597703,FR
+3652597704,3652597707,DE
+3652597708,3652597887,FR
3652597888,3652597903,GB
3652597904,3652599569,FR
3652599570,3652599570,PT
@@ -173149,7 +182166,8 @@
3652621632,3652621663,PT
3652621664,3652621823,FR
3652621824,3652621951,IE
-3652621952,3652622271,FR
+3652621952,3652622079,ES
+3652622080,3652622271,FR
3652622272,3652622335,GB
3652622336,3652622879,FR
3652622880,3652622911,CZ
@@ -173231,7 +182249,9 @@
3652643584,3652643647,ES
3652643648,3652644031,FR
3652644032,3652644063,BE
-3652644064,3652644223,FR
+3652644064,3652644143,FR
+3652644144,3652644159,DE
+3652644160,3652644223,FR
3652644224,3652644239,NL
3652644240,3652644351,FR
3652644352,3652644383,FI
@@ -173361,16 +182381,18 @@
3653754880,3653758975,UA
3653758976,3653763071,RU
3653763072,3654025215,IT
-3654025216,3654259711,GB
-3654259712,3654259967,US
-3654259968,3654287359,GB
+3654025216,3654287359,GB
3654287360,3654467071,SE
3654467072,3654467327,DK
3654467328,3654606975,SE
+3654607014,3654607015,FI
+3654607020,3654607023,FI
+3654607028,3654607031,FI
+3654607036,3654607037,FI
3654607104,3654608404,SE
3654608405,3654608405,NO
-3654608406,3654610431,SE
-3654610432,3654610943,FR
+3654608406,3654610687,SE
+3654610688,3654610943,FR
3654610944,3654610951,SE
3654610952,3654610959,DE
3654610960,3654612271,SE
@@ -173380,8 +182402,18 @@
3654613088,3654614047,SE
3654614048,3654614063,GB
3654614064,3654614079,SE
-3654614080,3654614271,FI
-3654614272,3654811647,SE
+3654614080,3654614143,FI
+3654614144,3654614219,SE
+3654614220,3654614223,FI
+3654614224,3654614227,SE
+3654614228,3654614231,FI
+3654614232,3654614235,SE
+3654614236,3654614239,FI
+3654614240,3654614243,SE
+3654614244,3654614247,FI
+3654614248,3654614251,SE
+3654614252,3654614252,FI
+3654614253,3654811647,SE
3654811648,3654942719,ES
3654942720,3655073791,IR
3655073792,3655335935,IT
@@ -173485,9 +182517,7 @@
3673751552,3673817087,CN
3673817088,3673882623,HK
3673882624,3673948159,JP
-3673948160,3674062847,HK
-3674062848,3674064895,AU
-3674064896,3674210303,HK
+3673948160,3674210303,HK
3674210304,3678404607,JP
3678404608,3678535679,IN
3678535680,3678666751,JP
@@ -173535,7 +182565,9 @@
3697655808,3697672191,CN
3697672192,3697737727,JP
3697737728,3697803263,KR
-3697803264,3698327551,JP
+3697803264,3698070527,JP
+3698070528,3698071551,AU
+3698071552,3698327551,JP
3698327552,3698589695,CN
3698589696,3699376127,KR
3699376128,3700424703,TW
@@ -173673,7 +182705,7 @@
3707207680,3707208703,BD
3707208704,3707209727,NZ
3707209728,3707211775,CN
-3707211776,3707215871,NC
+3707211776,3707215871,KR
3707215872,3707217919,BD
3707217920,3707219967,ID
3707219968,3707222015,AU
@@ -173808,7 +182840,7 @@
3743019008,3743022079,MY
3743022080,3743023103,BD
3743023104,3743027199,TW
-3743027200,3743028223,US
+3743027200,3743028223,IN
3743028224,3743029247,AF
3743029248,3743030271,NZ
3743030272,3743035391,IN
@@ -173919,7 +182951,9 @@
3757862912,3757867007,JP
3757867008,3757875519,CN
3757875520,3757875583,HK
-3757875584,3757899775,CN
+3757875584,3757876223,CN
+3757876224,3757876479,JP
+3757876480,3757899775,CN
3757899776,3757965311,KR
3757965312,3758063615,CN
3758063616,3758079999,HK
diff --git a/src/config/geoip6 b/src/config/geoip6
index c3d1294e66..356f6aee8b 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,4 +1,4 @@
-# Last updated based on January 3 2019 Maxmind GeoLite2 Country
+# Last updated based on February 5 2019 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -113,20 +113,20 @@
2001:470:d:268::,2001:470:d:268:ffff:ffff:ffff:ffff,US
2001:470:d:269::,2001:470:d:2a3:ffff:ffff:ffff:ffff,CN
2001:470:d:2a4::,2001:470:d:2a4:ffff:ffff:ffff:ffff,US
-2001:470:d:2a5::,2001:470:d:7ff:ffff:ffff:ffff:ffff,CN
-2001:470:d:800::,2001:470:d:13ff:ffff:ffff:ffff:ffff,US
-2001:470:d:1400::,2001:470:d:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:d:2a5::,2001:470:d:8fb:ffff:ffff:ffff:ffff,CN
+2001:470:d:8fc::,2001:470:d:8fc:ffff:ffff:ffff:ffff,US
+2001:470:d:8fd::,2001:470:d:ffff:ffff:ffff:ffff:ffff,CN
2001:470:e::,2001:470:18:ffff:ffff:ffff:ffff:ffff,US
2001:470:19::,2001:470:19:7ff:ffff:ffff:ffff:ffff,HK
2001:470:19:800::,2001:470:19:e7f:ffff:ffff:ffff:ffff,CN
2001:470:19:e80::,2001:470:19:e80:ffff:ffff:ffff:ffff,HK
2001:470:19:e81::,2001:470:19:fff:ffff:ffff:ffff:ffff,CN
2001:470:19:1000::,2001:470:19:ffff:ffff:ffff:ffff:ffff,HK
-2001:470:1a::,2001:470:1b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1c::,2001:470:1d:90f:ffff:ffff:ffff:ffff,CA
+2001:470:1a::,2001:470:1c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1d::,2001:470:1d:90f:ffff:ffff:ffff:ffff,CA
2001:470:1d:910::,2001:470:1d:910:ffff:ffff:ffff:ffff,US
-2001:470:1d:911::,2001:470:1f:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:20::,2001:470:23:429:ffff:ffff:ffff:ffff,US
+2001:470:1d:911::,2001:470:1d:ffff:ffff:ffff:ffff:ffff,CA
+2001:470:1e::,2001:470:23:429:ffff:ffff:ffff:ffff,US
2001:470:23:42a::,2001:470:23:42a:ffff:ffff:ffff:ffff,RU
2001:470:23:42b::,2001:470:23:ffff:ffff:ffff:ffff:ffff,US
2001:470:24::,2001:470:24:3ff:ffff:ffff:ffff:ffff,KR
@@ -134,15 +134,14 @@
2001:470:24:600::,2001:470:24:7ff:ffff:ffff:ffff:ffff,KR
2001:470:24:800::,2001:470:24:ffff:ffff:ffff:ffff:ffff,CN
2001:470:25::,2001:470:25:ffff:ffff:ffff:ffff:ffff,US
-2001:470:26::,2001:470:26:65b:ffff:ffff:ffff:ffff,RU
-2001:470:26:65c::,2001:470:26:65c:ffff:ffff:ffff:ffff,CH
-2001:470:26:65d::,2001:470:26:825:ffff:ffff:ffff:ffff,RU
-2001:470:26:826::,2001:470:26:826:ffff:ffff:ffff:ffff,CH
-2001:470:26:827::,2001:470:26:b6c:ffff:ffff:ffff:ffff,RU
+2001:470:26::,2001:470:26:b6c:ffff:ffff:ffff:ffff,CH
2001:470:26:b6d::,2001:470:26:b6d:ffff:ffff:ffff:ffff,AT
-2001:470:26:b6e::,2001:470:27:936:ffff:ffff:ffff:ffff,RU
+2001:470:26:b6e::,2001:470:27:1a5:ffff:ffff:ffff:ffff,CH
+2001:470:27:1a6::,2001:470:27:1a6:ffff:ffff:ffff:ffff,RU
+2001:470:27:1a7::,2001:470:27:936:ffff:ffff:ffff:ffff,CH
2001:470:27:937::,2001:470:27:937:ffff:ffff:ffff:ffff,SE
-2001:470:27:938::,2001:470:28:35:ffff:ffff:ffff:ffff,RU
+2001:470:27:938::,2001:470:27:ffff:ffff:ffff:ffff:ffff,CH
+2001:470:28::,2001:470:28:35:ffff:ffff:ffff:ffff,RU
2001:470:28:36::,2001:470:28:36:ffff:ffff:ffff:ffff,SE
2001:470:28:37::,2001:470:28:a7:ffff:ffff:ffff:ffff,RU
2001:470:28:a8::,2001:470:28:a8:ffff:ffff:ffff:ffff,SE
@@ -171,21 +170,17 @@
2001:470:36:6d::,2001:470:36:6d:ffff:ffff:ffff:ffff,IN
2001:470:36:6e::,2001:470:6c:39d:ffff:ffff:ffff:ffff,US
2001:470:6c:39e::,2001:470:6c:39e:ffff:ffff:ffff:ffff,DK
-2001:470:6c:39f::,2001:470:6c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6d::,2001:470:6d:39d:ffff:ffff:ffff:ffff,DE
+2001:470:6c:39f::,2001:470:6d:39d:ffff:ffff:ffff:ffff,US
2001:470:6d:39e::,2001:470:6d:39e:ffff:ffff:ffff:ffff,DK
-2001:470:6d:39f::,2001:470:6d:6b1:ffff:ffff:ffff:ffff,DE
+2001:470:6d:39f::,2001:470:6d:6b1:ffff:ffff:ffff:ffff,US
2001:470:6d:6b2::,2001:470:6d:6b2:ffff:ffff:ffff:ffff,ES
-2001:470:6d:6b3::,2001:470:6d:7ff:ffff:ffff:ffff:ffff,DE
-2001:470:6d:800::,2001:470:6d:e8d:ffff:ffff:ffff:ffff,US
+2001:470:6d:6b3::,2001:470:6d:e8d:ffff:ffff:ffff:ffff,US
2001:470:6d:e8e::,2001:470:6d:e8e:ffff:ffff:ffff:ffff,DE
2001:470:6d:e8f::,2001:470:6e:ffff:ffff:ffff:ffff:ffff,US
2001:470:6f::,2001:470:6f:49e:ffff:ffff:ffff:ffff,CZ
2001:470:6f:49f::,2001:470:6f:49f:ffff:ffff:ffff:ffff,SK
-2001:470:6f:4a0::,2001:470:6f:7ff:ffff:ffff:ffff:ffff,CZ
-2001:470:6f:800::,2001:470:6f:cb1:ffff:ffff:ffff:ffff,US
-2001:470:6f:cb2::,2001:470:6f:cb2:ffff:ffff:ffff:ffff,CZ
-2001:470:6f:cb3::,2001:470:70:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6f:4a0::,2001:470:6f:ffff:ffff:ffff:ffff:ffff,CZ
+2001:470:70::,2001:470:70:ffff:ffff:ffff:ffff:ffff,US
2001:470:71::,2001:470:71:5ff:ffff:ffff:ffff:ffff,RU
2001:470:71:600::,2001:470:71:600:ffff:ffff:ffff:ffff,PL
2001:470:71:601::,2001:470:71:60b:ffff:ffff:ffff:ffff,RU
@@ -199,65 +194,89 @@
2001:470:7b:374::,2001:470:7b:374:ffff:ffff:ffff:ffff,SG
2001:470:7b:375::,2001:470:17ff:ffff:ffff:ffff:ffff:ffff,US
2001:470:1800::,2001:470:1bff:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:1c00::,2001:470:1f07:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f08::,2001:470:1f09:ffff:ffff:ffff:ffff:ffff,GB
-2001:470:1f0a::,2001:470:1f0a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1c00::,2001:470:1f04:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f05::,2001:470:1f05:83:ffff:ffff:ffff:ffff,CN
+2001:470:1f05:84::,2001:470:1f05:84:ffff:ffff:ffff:ffff,US
+2001:470:1f05:85::,2001:470:1f05:132:ffff:ffff:ffff:ffff,CN
+2001:470:1f05:133::,2001:470:1f05:133:ffff:ffff:ffff:ffff,US
+2001:470:1f05:134::,2001:470:1f05:8c2::f,CN
+2001:470:1f05:8c2::10,2001:470:1f05:8c2::10,US
+2001:470:1f05:8c2::11,2001:470:1f05:ed0::,CN
+2001:470:1f05:ed0::1,2001:470:1f05:ed0::1,US
+2001:470:1f05:ed0::2,2001:470:1f05:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:1f06::,2001:470:1f08:136:ffff:ffff:ffff:ffff,US
+2001:470:1f08:137::,2001:470:1f08:137:ffff:ffff:ffff:ffff,GB
+2001:470:1f08:138::,2001:470:1f08:415::1,US
+2001:470:1f08:415::2,2001:470:1f08:415::2,GB
+2001:470:1f08:415::3,2001:470:1f08:1219:ffff:ffff:ffff:ffff,US
+2001:470:1f08:121a::,2001:470:1f08:121a:ffff:ffff:ffff:ffff,GB
+2001:470:1f08:121b::,2001:470:1f08:1367:ffff:ffff:ffff:ffff,US
+2001:470:1f08:1368::,2001:470:1f08:1368:ffff:ffff:ffff:ffff,GB
+2001:470:1f08:1369::,2001:470:1f09:114:ffff:ffff:ffff:ffff,US
+2001:470:1f09:115::,2001:470:1f09:115:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:116::,2001:470:1f09:2b5:ffff:ffff:ffff:ffff,US
+2001:470:1f09:2b6::,2001:470:1f09:2b6:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:2b7::,2001:470:1f09:414:ffff:ffff:ffff:ffff,US
+2001:470:1f09:415::,2001:470:1f09:415:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:416::,2001:470:1f09:1219:ffff:ffff:ffff:ffff,US
+2001:470:1f09:121a::,2001:470:1f09:121a:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:121b::,2001:470:1f09:1367:ffff:ffff:ffff:ffff,US
+2001:470:1f09:1368::,2001:470:1f09:1368:ffff:ffff:ffff:ffff,GB
+2001:470:1f09:1369::,2001:470:1f0a:ffff:ffff:ffff:ffff:ffff,US
2001:470:1f0b::,2001:470:1f0b:30e:ffff:ffff:ffff:ffff,RU
2001:470:1f0b:30f::,2001:470:1f0b:30f:ffff:ffff:ffff:ffff,DE
-2001:470:1f0b:310::,2001:470:1f0b:4b0:ffff:ffff:ffff:ffff,RU
-2001:470:1f0b:4b1::,2001:470:1f0b:4b1:ffff:ffff:ffff:ffff,UA
-2001:470:1f0b:4b2::,2001:470:1f0b:59f:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:310::,2001:470:1f0b:3ff:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:400::,2001:470:1f0b:59f:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:5a0::,2001:470:1f0b:5a0:ffff:ffff:ffff:ffff,AT
-2001:470:1f0b:5a1::,2001:470:1f0b:779:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:5a1::,2001:470:1f0b:779:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:77a::,2001:470:1f0b:77a:ffff:ffff:ffff:ffff,DE
-2001:470:1f0b:77b::,2001:470:1f0b:784:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:77b::,2001:470:1f0b:784:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:785::,2001:470:1f0b:785:ffff:ffff:ffff:ffff,PL
-2001:470:1f0b:786::,2001:470:1f0b:9c7:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:786::,2001:470:1f0b:7ff:ffff:ffff:ffff:ffff,UA
+2001:470:1f0b:800::,2001:470:1f0b:9c7:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:9c8::,2001:470:1f0b:9c8:ffff:ffff:ffff:ffff,AT
-2001:470:1f0b:9c9::,2001:470:1f0b:c1f:ffff:ffff:ffff:ffff,RU
-2001:470:1f0b:c20::,2001:470:1f0b:c20:ffff:ffff:ffff:ffff,DE
-2001:470:1f0b:c21::,2001:470:1f0b:118a:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:9c9::,2001:470:1f0b:be6:ffff:ffff:ffff:ffff,DE
+2001:470:1f0b:be7::,2001:470:1f0b:be7:ffff:ffff:ffff:ffff,RU
+2001:470:1f0b:be8::,2001:470:1f0b:fff:ffff:ffff:ffff:ffff,DE
+2001:470:1f0b:1000::,2001:470:1f0b:118a:ffff:ffff:ffff:ffff,RU
2001:470:1f0b:118b::,2001:470:1f0b:118b:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:118c::,2001:470:1f0b:11d1:ffff:ffff:ffff:ffff,RU
2001:470:1f0b:11d2::,2001:470:1f0b:11d2:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:11d3::,2001:470:1f0b:1211:ffff:ffff:ffff:ffff,RU
2001:470:1f0b:1212::,2001:470:1f0b:1212:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:1213::,2001:470:1f0b:ffff:ffff:ffff:ffff:ffff,RU
-2001:470:1f0c::,2001:470:1f15:b3:ffff:ffff:ffff:ffff,US
+2001:470:1f0c::,2001:470:1f13:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f14::,2001:470:1f15:b3:ffff:ffff:ffff:ffff,RU
2001:470:1f15:b4::,2001:470:1f15:b4:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:b5::,2001:470:1f15:16b:ffff:ffff:ffff:ffff,US
+2001:470:1f15:b5::,2001:470:1f15:16b:ffff:ffff:ffff:ffff,RU
2001:470:1f15:16c::,2001:470:1f15:16c:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:16d::,2001:470:1f15:20f:ffff:ffff:ffff:ffff,US
+2001:470:1f15:16d::,2001:470:1f15:20f:ffff:ffff:ffff:ffff,RU
2001:470:1f15:210::,2001:470:1f15:210:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:211::,2001:470:1f15:44f:ffff:ffff:ffff:ffff,US
+2001:470:1f15:211::,2001:470:1f15:44f:ffff:ffff:ffff:ffff,RU
2001:470:1f15:450::,2001:470:1f15:450:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:451::,2001:470:1f15:500:ffff:ffff:ffff:ffff,US
+2001:470:1f15:451::,2001:470:1f15:500:ffff:ffff:ffff:ffff,RU
2001:470:1f15:501::,2001:470:1f15:501:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:502::,2001:470:1f15:582:ffff:ffff:ffff:ffff,US
+2001:470:1f15:502::,2001:470:1f15:582:ffff:ffff:ffff:ffff,RU
2001:470:1f15:583::,2001:470:1f15:583:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:584::,2001:470:1f15:5ab:ffff:ffff:ffff:ffff,US
+2001:470:1f15:584::,2001:470:1f15:5ab:ffff:ffff:ffff:ffff,RU
2001:470:1f15:5ac::,2001:470:1f15:5ac:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:5ad::,2001:470:1f15:73b:ffff:ffff:ffff:ffff,US
+2001:470:1f15:5ad::,2001:470:1f15:73b:ffff:ffff:ffff:ffff,RU
2001:470:1f15:73c::,2001:470:1f15:73c:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:73d::,2001:470:1f15:9c5:ffff:ffff:ffff:ffff,US
+2001:470:1f15:73d::,2001:470:1f15:9c5:ffff:ffff:ffff:ffff,RU
2001:470:1f15:9c6::,2001:470:1f15:9c6:ffff:ffff:ffff:ffff,AT
-2001:470:1f15:9c7::,2001:470:1f15:a5e:ffff:ffff:ffff:ffff,US
+2001:470:1f15:9c7::,2001:470:1f15:a5e:ffff:ffff:ffff:ffff,RU
2001:470:1f15:a5f::,2001:470:1f15:a60:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:a61::,2001:470:1f15:b25:ffff:ffff:ffff:ffff,US
+2001:470:1f15:a61::,2001:470:1f15:b25:ffff:ffff:ffff:ffff,RU
2001:470:1f15:b26::,2001:470:1f15:b26:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:b27::,2001:470:1f15:fff:ffff:ffff:ffff:ffff,US
+2001:470:1f15:b27::,2001:470:1f15:fff:ffff:ffff:ffff:ffff,RU
2001:470:1f15:1000::,2001:470:1f15:10db:ffff:ffff:ffff:ffff,DK
2001:470:1f15:10dc::,2001:470:1f15:10dc:ffff:ffff:ffff:ffff,NL
2001:470:1f15:10dd::,2001:470:1f15:110b:ffff:ffff:ffff:ffff,DK
2001:470:1f15:110c::,2001:470:1f15:110c:ffff:ffff:ffff:ffff,BE
-2001:470:1f15:110d::,2001:470:1f15:1fff:ffff:ffff:ffff:ffff,DK
-2001:470:1f15:2000::,2001:470:1f19:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f1a::,2001:470:1f1b:3ff:ffff:ffff:ffff:ffff,HU
-2001:470:1f1b:400::,2001:470:1f1b:5ff:ffff:ffff:ffff:ffff,RU
-2001:470:1f1b:600::,2001:470:1f1b:67f:ffff:ffff:ffff:ffff,AT
-2001:470:1f1b:680::,2001:470:1f1b:7ff:ffff:ffff:ffff:ffff,RU
-2001:470:1f1b:800::,2001:470:1f1b:ffff:ffff:ffff:ffff:ffff,HU
-2001:470:1f1c::,2001:470:1f1c:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f15:110d::,2001:470:1f15:11ff:ffff:ffff:ffff:ffff,DK
+2001:470:1f15:1200::,2001:470:1f15:ffff:ffff:ffff:ffff:ffff,RU
+2001:470:1f16::,2001:470:1f1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f1c::,2001:470:1f1c:ffff:ffff:ffff:ffff:ffff,RU
2001:470:1f1d::,2001:470:1f1d:ffff:ffff:ffff:ffff:ffff,GB
2001:470:1f1e::,2001:470:1f21:37:ffff:ffff:ffff:ffff,US
2001:470:1f21:38::,2001:470:1f21:38:ffff:ffff:ffff:ffff,PT
@@ -280,9 +299,12 @@
2001:470:6e00::,2001:470:6f5b:ffff:ffff:ffff:ffff:ffff,RU
2001:470:6f5c::,2001:470:6f5c:ffff:ffff:ffff:ffff:ffff,GB
2001:470:6f5d::,2001:470:6fff:ffff:ffff:ffff:ffff:ffff,RU
-2001:470:7000::,2001:470:7286:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:7000::,2001:470:71ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:7200::,2001:470:7271:ffff:ffff:ffff:ffff:ffff,UA
+2001:470:7272::,2001:470:7272:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:7273::,2001:470:7286:ffff:ffff:ffff:ffff:ffff,UA
2001:470:7287::,2001:470:7287:ffff:ffff:ffff:ffff:ffff,PL
-2001:470:7288::,2001:470:73ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:7288::,2001:470:73ff:ffff:ffff:ffff:ffff:ffff,UA
2001:470:7400::,2001:470:7421:ffff:ffff:ffff:ffff:ffff,US
2001:470:7422::,2001:470:7422:ffff:ffff:ffff:ffff:ffff,DE
2001:470:7423::,2001:470:747a:ffff:ffff:ffff:ffff:ffff,US
@@ -292,21 +314,11 @@
2001:470:74ff::,2001:470:74ff:ffff:ffff:ffff:ffff:ffff,US
2001:470:7500::,2001:470:757f:ffff:ffff:ffff:ffff:ffff,GR
2001:470:7580::,2001:470:75ff:ffff:ffff:ffff:ffff:ffff,RU
-2001:470:7600::,2001:470:7837:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7838::,2001:470:7838:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7839::,2001:470:783c:ffff:ffff:ffff:ffff:ffff,US
-2001:470:783d::,2001:470:783d:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:783e::,2001:470:7859:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7600::,2001:470:77ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7800::,2001:470:7859:ffff:ffff:ffff:ffff:ffff,NL
2001:470:785a::,2001:470:785a:ffff:ffff:ffff:ffff:ffff,AT
-2001:470:785b::,2001:470:7a99:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7a9a::,2001:470:7a9a:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7a9b::,2001:470:7ad1:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7ad2::,2001:470:7ad2:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7ad3::,2001:470:7ad5:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7ad6::,2001:470:7ad6:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7ad7::,2001:470:7bbf:ffff:ffff:ffff:ffff:ffff,US
-2001:470:7bc0::,2001:470:7bc0:ffff:ffff:ffff:ffff:ffff,NL
-2001:470:7bc1::,2001:470:7d6a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:785b::,2001:470:7bff:ffff:ffff:ffff:ffff:ffff,NL
+2001:470:7c00::,2001:470:7d6a:ffff:ffff:ffff:ffff:ffff,US
2001:470:7d6b::,2001:470:7d6b:ffff:ffff:ffff:ffff:ffff,NL
2001:470:7d6c::,2001:470:7ea5:ffff:ffff:ffff:ffff:ffff,US
2001:470:7ea6::,2001:470:7ea6:ffff:ffff:ffff:ffff:ffff,NL
@@ -324,17 +336,13 @@
2001:470:b600::,2001:470:b625:ffff:ffff:ffff:ffff:ffff,CH
2001:470:b626::,2001:470:b626:ff:ffff:ffff:ffff:ffff,DE
2001:470:b626:100::,2001:470:b7ff:ffff:ffff:ffff:ffff:ffff,CH
-2001:470:b800::,2001:470:c3ff:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c400::,2001:470:c4b1:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:c4b2::,2001:470:c4b2:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c4b3::,2001:470:c4d2:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:c4d3::,2001:470:c4d3:ffff:ffff:ffff:ffff:ffff,US
-2001:470:c4d4::,2001:470:c7ff:ffff:ffff:ffff:ffff:ffff,CA
-2001:470:c800::,2001:470:d6ee:ffff:ffff:ffff:ffff:ffff,US
+2001:470:b800::,2001:470:c7ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:c800::,2001:470:cbff:ffff:ffff:ffff:ffff:ffff,IT
+2001:470:cc00::,2001:470:d6ee:ffff:ffff:ffff:ffff:ffff,US
2001:470:d6ef::,2001:470:d6ef:ffff:ffff:ffff:ffff:ffff,FR
-2001:470:d6f0::,2001:470:d7ff:ffff:ffff:ffff:ffff:ffff,US
-2001:470:d800::,2001:470:dbff:ffff:ffff:ffff:ffff:ffff,BR
-2001:470:dc00::,2001:470:dc1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:d6f0::,2001:470:d8ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:d900::,2001:470:d97f:ffff:ffff:ffff:ffff:ffff,BZ
+2001:470:d980::,2001:470:dc1b:ffff:ffff:ffff:ffff:ffff,US
2001:470:dc1c::,2001:470:dc1c:ffff:ffff:ffff:ffff:ffff,RU
2001:470:dc1d::,2001:470:dd3a:ffff:ffff:ffff:ffff:ffff,US
2001:470:dd3b::,2001:470:dd3b:ffff:ffff:ffff:ffff:ffff,FI
@@ -352,14 +360,12 @@
2001:470:dfca::,2001:470:dfca:ffff:ffff:ffff:ffff:ffff,RU
2001:470:dfcb::,2001:470:ebff:ffff:ffff:ffff:ffff:ffff,US
2001:470:ec00::,2001:470:efff:ffff:ffff:ffff:ffff:ffff,SG
-2001:470:f000::,2001:470:f08a:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f000::,2001:470:f07f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f080::,2001:470:f08a:ffff:ffff:ffff:ffff:ffff,CN
2001:470:f08b::,2001:470:f08b:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f08c::,2001:470:f0f3:ffff:ffff:ffff:ffff:ffff,CN
-2001:470:f0f4::,2001:470:f0f4:ffff:ffff:ffff:ffff:ffff,US
-2001:470:f0f5::,2001:470:f24b:98::,CN
-2001:470:f24b:98::1,2001:470:f24b:98::1,US
-2001:470:f24b:98::2,2001:470:f3ff:ffff:ffff:ffff:ffff:ffff,CN
-2001:470:f400::,2001:470:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f08c::,2001:470:f0bf:ffff:ffff:ffff:ffff:ffff,CN
+2001:470:f0c0::,2001:470:fbff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:fc00::,2001:470:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:478::,2001:478:ffff:ffff:ffff:ffff:ffff:ffff,KN
2001:480::,2001:480:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:490::,2001:490:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -536,6 +542,7 @@
2001:504:74::,2001:504:79:ffff:ffff:ffff:ffff:ffff,US
2001:504:80::,2001:504:92:ffff:ffff:ffff:ffff:ffff,US
2001:504:93::,2001:504:93:ffff:ffff:ffff:ffff:ffff,VG
+2001:504:94::,2001:504:95:ffff:ffff:ffff:ffff:ffff,US
2001:506::,2001:506:1:ffff:ffff:ffff:ffff:ffff,US
2001:506:8::,2001:506:8:ffff:ffff:ffff:ffff:ffff,US
2001:506:20::,2001:506:20:ffff:ffff:ffff:ffff:ffff,CA
@@ -611,133 +618,18 @@
2001:668:e401:1::,2001:668:e401:2:ffff:ffff:ffff:ffff,CZ
2001:668:e401:3::,2001:66f:ffff:ffff:ffff:ffff:ffff:ffff,IE
2001:670::,2001:673:ffff:ffff:ffff:ffff:ffff:ffff,FI
-2001:678::,2001:678:273:ffff:ffff:ffff:ffff:ffff,UA
+2001:678::,2001:678:20f:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:210::,2001:678:210:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:211::,2001:678:273:ffff:ffff:ffff:ffff:ffff,UA
2001:678:274::,2001:678:274:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:275::,2001:678:2ff:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:300::,2001:678:303:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:310::,2001:678:310:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:314::,2001:678:314:ffff:ffff:ffff:ffff:ffff,RO
-2001:678:318::,2001:678:318:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:31c::,2001:678:31c:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:320::,2001:678:320:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:324::,2001:678:324:ffff:ffff:ffff:ffff:ffff,LV
-2001:678:328::,2001:678:328:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:32c::,2001:678:32c:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:330::,2001:678:330:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:334::,2001:678:334:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:338::,2001:678:338:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:33c::,2001:678:33c:ffff:ffff:ffff:ffff:ffff,DK
-2001:678:340::,2001:678:340:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:344::,2001:678:344:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:348::,2001:678:348:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:34c::,2001:678:34c:ffff:ffff:ffff:ffff:ffff,US
-2001:678:350::,2001:678:350:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:354::,2001:678:354:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:358::,2001:678:358:ffff:ffff:ffff:ffff:ffff,IE
-2001:678:35c::,2001:678:35c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:360::,2001:678:360:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:364::,2001:678:364:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:368::,2001:678:368:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:36c::,2001:678:36c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:370::,2001:678:370:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:374::,2001:678:374:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:378::,2001:678:378:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:37c::,2001:678:37c:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:380::,2001:678:380:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:384::,2001:678:384:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:388::,2001:678:388:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:38c::,2001:678:38c:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:390::,2001:678:390:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:394::,2001:678:394:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:398::,2001:678:398:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:39c::,2001:678:39c:ffff:ffff:ffff:ffff:ffff,SA
-2001:678:3a0::,2001:678:3a0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3a4::,2001:678:3a4:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:3a8::,2001:678:3a8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3ac::,2001:678:3ac:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:3b0::,2001:678:3b0:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:3b4::,2001:678:3b4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3b8::,2001:678:3b8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3bc::,2001:678:3bc:ffff:ffff:ffff:ffff:ffff,FR
-2001:678:3c0::,2001:678:3c0:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:3c4::,2001:678:3c4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3c8::,2001:678:3c8:ffff:ffff:ffff:ffff:ffff,GR
-2001:678:3cc::,2001:678:3cc:ffff:ffff:ffff:ffff:ffff,FR
-2001:678:3d0::,2001:678:3d0:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:3d4::,2001:678:3d4:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:3d8::,2001:678:3d8:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:3dc::,2001:678:3dc:ffff:ffff:ffff:ffff:ffff,AT
-2001:678:3e0::,2001:678:3e0:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:3e4::,2001:678:3e4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3e8::,2001:678:3e8:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:3ec::,2001:678:3ec:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:3f0::,2001:678:3f0:ffff:ffff:ffff:ffff:ffff,NO
-2001:678:3f4::,2001:678:3f4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:3f8::,2001:678:3f8:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:3fc::,2001:678:3fc:ffff:ffff:ffff:ffff:ffff,FR
-2001:678:400::,2001:678:400:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:404::,2001:678:404:ffff:ffff:ffff:ffff:ffff,RS
-2001:678:408::,2001:678:408:ffff:ffff:ffff:ffff:ffff,ME
-2001:678:40c::,2001:678:40c:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:410::,2001:678:410:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:414::,2001:678:414:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:418::,2001:678:418:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:41c::,2001:678:41c:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:420::,2001:678:420:ffff:ffff:ffff:ffff:ffff,ES
-2001:678:424::,2001:678:424:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:428::,2001:678:428:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:42c::,2001:678:42c:ffff:ffff:ffff:ffff:ffff,SI
-2001:678:430::,2001:678:431:baff:ffff:ffff:ffff:ffff,GB
+2001:678:275::,2001:678:3ff:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:400::,2001:678:431:baff:ffff:ffff:ffff:ffff,DE
2001:678:431:bb00::,2001:678:431:bbff:ffff:ffff:ffff:ffff,FR
-2001:678:431:bc00::,2001:678:433:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:440::,2001:678:440:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:444::,2001:678:444:ffff:ffff:ffff:ffff:ffff,TR
-2001:678:448::,2001:678:448:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:44c::,2001:678:44c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:450::,2001:678:450:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:454::,2001:678:454:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:458::,2001:678:458:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:45c::,2001:678:45c:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:460::,2001:678:460:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:464::,2001:678:464:ffff:ffff:ffff:ffff:ffff,NO
-2001:678:468::,2001:678:468:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:46c::,2001:678:46c:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:470::,2001:678:470:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:474::,2001:678:474:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:478::,2001:678:478:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:47c::,2001:678:47c:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:431:bc00::,2001:678:47f:ffff:ffff:ffff:ffff:ffff,DE
2001:678:480::,2001:678:480:ffff:ffff:ffff:ffff:ffff,AT
-2001:678:484::,2001:678:484:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:488::,2001:678:488:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:48c::,2001:678:48c:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:490::,2001:678:490:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:494::,2001:678:494:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:498::,2001:678:498:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:49c::,2001:678:49c:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:4a0::,2001:678:4a0:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:4a4::,2001:678:4a4:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:4a8::,2001:678:4a8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4ac::,2001:678:4ac:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:4b0::,2001:678:4b0:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:4b4::,2001:678:4b4:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:4b8::,2001:678:4b8:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:4bc::,2001:678:4bc:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:4c0::,2001:678:4c0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4c4::,2001:678:4c4:ffff:ffff:ffff:ffff:ffff,CH
-2001:678:4c8::,2001:678:4c8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4cc::,2001:678:4cc:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4d0::,2001:678:4d0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4d4::,2001:678:4d4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4d8::,2001:678:4d8:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:4dc::,2001:678:4dc:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4e0::,2001:678:4e0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4e4::,2001:678:4e4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4e8::,2001:678:4e8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4ec::,2001:678:4ec:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4f0::,2001:678:4f0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4f4::,2001:678:4f4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:4f8::,2001:678:4f8:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:481::,2001:678:4fb:ffff:ffff:ffff:ffff:ffff,DE
2001:678:4fc::,2001:678:4fc:ffff:ffff:ffff:ffff:ffff,RO
+2001:678:4fd::,2001:678:4ff:ffff:ffff:ffff:ffff:ffff,DE
2001:678:500::,2001:678:500:ffff:ffff:ffff:ffff:ffff,GB
2001:678:504::,2001:678:504:ffff:ffff:ffff:ffff:ffff,PL
2001:678:508::,2001:678:508:ffff:ffff:ffff:ffff:ffff,ES
@@ -770,36 +662,11 @@
2001:678:574::,2001:678:574:ffff:ffff:ffff:ffff:ffff,PL
2001:678:578::,2001:678:578:ffff:ffff:ffff:ffff:ffff,DE
2001:678:57c::,2001:678:57c:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:580::,2001:678:580:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:584::,2001:678:584:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:588::,2001:678:588:ffff:ffff:ffff:ffff:ffff,CH
+2001:678:580::,2001:678:58b:ffff:ffff:ffff:ffff:ffff,GB
2001:678:58c::,2001:678:58c:ffff:ffff:ffff:ffff:ffff,IS
-2001:678:590::,2001:678:590:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:594::,2001:678:594:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:598::,2001:678:598:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:59c::,2001:678:59c:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5a4::,2001:678:5a4:ffff:ffff:ffff:ffff:ffff,CZ
-2001:678:5a8::,2001:678:5a8:ffff:ffff:ffff:ffff:ffff,AT
-2001:678:5ac::,2001:678:5ac:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5b0::,2001:678:5b1:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:5b8::,2001:678:5b8:ffff:ffff:ffff:ffff:ffff,SI
-2001:678:5bc::,2001:678:5bc:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:5c0::,2001:678:5c0:ffff:ffff:ffff:ffff:ffff,BE
-2001:678:5c4::,2001:678:5c4:ffff:ffff:ffff:ffff:ffff,PL
-2001:678:5c8::,2001:678:5c8:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:5cc::,2001:678:5cc:ffff:ffff:ffff:ffff:ffff,UA
-2001:678:5d0::,2001:678:5d0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5d4::,2001:678:5d4:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5d8::,2001:678:5d8:ffff:ffff:ffff:ffff:ffff,SE
-2001:678:5dc::,2001:678:5dc:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:58d::,2001:678:5df:ffff:ffff:ffff:ffff:ffff,GB
2001:678:5e0::,2001:678:5e0:ffff:ffff:ffff:ffff:ffff,RU
-2001:678:5e4::,2001:678:5e4:ffff:ffff:ffff:ffff:ffff,US
-2001:678:5e8::,2001:678:5e8:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5ec::,2001:678:5ec:ffff:ffff:ffff:ffff:ffff,GB
-2001:678:5f0::,2001:678:5f0:ffff:ffff:ffff:ffff:ffff,DE
-2001:678:5f4::,2001:678:5f4:ffff:ffff:ffff:ffff:ffff,PS
-2001:678:5f8::,2001:678:5f8:ffff:ffff:ffff:ffff:ffff,NL
-2001:678:5fc::,2001:678:5fc:ffff:ffff:ffff:ffff:ffff,KG
+2001:678:5e1::,2001:678:5ff:ffff:ffff:ffff:ffff:ffff,GB
2001:678:600::,2001:678:600:ffff:ffff:ffff:ffff:ffff,RU
2001:678:604::,2001:678:604:ffff:ffff:ffff:ffff:ffff,UA
2001:678:608::,2001:678:608:ffff:ffff:ffff:ffff:ffff,PL
@@ -975,6 +842,15 @@
2001:678:8e0::,2001:678:8e0:ffff:ffff:ffff:ffff:ffff,DE
2001:678:8e4::,2001:678:8e4:ffff:ffff:ffff:ffff:ffff,DE
2001:678:8e8::,2001:678:8e8:ffff:ffff:ffff:ffff:ffff,LV
+2001:678:8ec::,2001:678:8ec:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:8f0::,2001:678:8f0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:8f4::,2001:678:8f4:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:8f8::,2001:678:8f8:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:8fc::,2001:678:8fc:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:900::,2001:678:900:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:904::,2001:678:904:ffff:ffff:ffff:ffff:ffff,BG
+2001:678:908::,2001:678:908:ffff:ffff:ffff:ffff:ffff,BG
+2001:678:90c::,2001:678:90c:ffff:ffff:ffff:ffff:ffff,FR
2001:67c::,2001:67c:5b:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:5c::,2001:67c:5c:ffff:ffff:ffff:ffff:ffff,BE
2001:67c:5d::,2001:67c:63:ffff:ffff:ffff:ffff:ffff,GB
@@ -984,9 +860,42 @@
2001:67c:89::,2001:67c:eb:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:ec::,2001:67c:ec:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:ed::,2001:67c:ff:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:100::,2001:67c:17f:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:100::,2001:67c:100:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:104::,2001:67c:104:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:108::,2001:67c:108:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:10c::,2001:67c:10c:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:110::,2001:67c:110:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:114::,2001:67c:114:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:118::,2001:67c:118:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:11c::,2001:67c:11c:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:120::,2001:67c:120:ffff:ffff:ffff:ffff:ffff,BE
+2001:67c:124::,2001:67c:124:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:128::,2001:67c:128:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:12c::,2001:67c:12c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:130::,2001:67c:130:ffff:ffff:ffff:ffff:ffff,SA
+2001:67c:134::,2001:67c:134:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:138::,2001:67c:138:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:13c::,2001:67c:13c:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:140::,2001:67c:140:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:144::,2001:67c:144:ffff:ffff:ffff:ffff:ffff,NL
+2001:67c:148::,2001:67c:148:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:14c::,2001:67c:14d:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:150::,2001:67c:150:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:154::,2001:67c:154:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:158::,2001:67c:158:ffff:ffff:ffff:ffff:ffff,DK
+2001:67c:15c::,2001:67c:15c:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:160::,2001:67c:160:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:164::,2001:67c:164:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:168::,2001:67c:168:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:16c::,2001:67c:16c:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:170::,2001:67c:170:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:174::,2001:67c:174:ffff:ffff:ffff:ffff:ffff,SM
+2001:67c:178::,2001:67c:178:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:17c::,2001:67c:17c:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:180::,2001:67c:1ff:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:200::,2001:67c:24b:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:200::,2001:67c:23f:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:240::,2001:67c:240:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:241::,2001:67c:24b:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:24c::,2001:67c:24c:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:24d::,2001:67c:2ef:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:2f0::,2001:67c:2f0:ffff:ffff:ffff:ffff:ffff,RU
@@ -1209,6 +1118,7 @@
2001:67c:1398::,2001:67c:1398:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:139c::,2001:67c:139c:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:13a0::,2001:67c:13a0:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:13a4::,2001:67c:13a4:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:13a8::,2001:67c:13a8:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:13ac::,2001:67c:13ac:ffff:ffff:ffff:ffff:ffff,FI
2001:67c:13b0::,2001:67c:13b0:ffff:ffff:ffff:ffff:ffff,DE
@@ -1396,65 +1306,9 @@
2001:67c:23f4::,2001:67c:23f4:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:23f8::,2001:67c:23f8:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:23fc::,2001:67c:23fc:ffff:ffff:ffff:ffff:ffff,BG
-2001:67c:2400::,2001:67c:2400:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2404::,2001:67c:2404:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2408::,2001:67c:2408:ffff:ffff:ffff:ffff:ffff,AE
-2001:67c:240c::,2001:67c:240c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2410::,2001:67c:2410:ffff:ffff:ffff:ffff:ffff,TR
-2001:67c:2414::,2001:67c:2414:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2418::,2001:67c:2418:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:241c::,2001:67c:241c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2420::,2001:67c:2420:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:2424::,2001:67c:2424:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2428::,2001:67c:2428:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:242c::,2001:67c:242c:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2430::,2001:67c:2433:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2440::,2001:67c:2440:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2444::,2001:67c:2444:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2448::,2001:67c:2448:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:244c::,2001:67c:244c:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:2450::,2001:67c:2450:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2454::,2001:67c:2454:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2458::,2001:67c:2458:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:245c::,2001:67c:245c:ffff:ffff:ffff:ffff:ffff,FI
-2001:67c:2460::,2001:67c:2460:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2464::,2001:67c:2464:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2468::,2001:67c:2468:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:246c::,2001:67c:246c:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2470::,2001:67c:2470:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2474::,2001:67c:2474:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:2478::,2001:67c:2478:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:247c::,2001:67c:247c:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2480::,2001:67c:2480:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:2484::,2001:67c:2484:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2488::,2001:67c:2488:ffff:ffff:ffff:ffff:ffff,CH
-2001:67c:248c::,2001:67c:248c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:2490::,2001:67c:2490:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:2494::,2001:67c:2494:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:2498::,2001:67c:2498:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:249c::,2001:67c:249c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:24a0::,2001:67c:24a0:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:24a4::,2001:67c:24a4:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:24a8::,2001:67c:24a8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:24b0::,2001:67c:24b0:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:24b4::,2001:67c:24b4:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:24b8::,2001:67c:24b8:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:24bc::,2001:67c:24bc:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:24c0::,2001:67c:24c0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:24c4::,2001:67c:24c4:ffff:ffff:ffff:ffff:ffff,RO
-2001:67c:24c8::,2001:67c:24c8:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:24cc::,2001:67c:24cc:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:24d0::,2001:67c:24d0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:24d4::,2001:67c:24d4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2400::,2001:67c:24d7:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:24d8::,2001:67c:24d8:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:24dc::,2001:67c:24dc:ffff:ffff:ffff:ffff:ffff,SI
-2001:67c:24e0::,2001:67c:24e0:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:24e4::,2001:67c:24e4:ffff:ffff:ffff:ffff:ffff,NO
-2001:67c:24e8::,2001:67c:24e9:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:24f0::,2001:67c:24f0:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:24f4::,2001:67c:24f4:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:24f8::,2001:67c:24f8:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:24fc::,2001:67c:24fc:ffff:ffff:ffff:ffff:ffff,NO
+2001:67c:24d9::,2001:67c:24ff:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:2500::,2001:67c:2543:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2544::,2001:67c:2544:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:2545::,2001:67c:2567:ffff:ffff:ffff:ffff:ffff,NL
@@ -1488,41 +1342,12 @@
2001:67c:265c::,2001:67c:265c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2660::,2001:67c:2660:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2664::,2001:67c:2664:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2668::,2001:67c:2668:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:266c::,2001:67c:266c:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2668::,2001:67c:266f:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2670::,2001:67c:2670:ffff:ffff:ffff:ffff:ffff,SK
2001:67c:2674::,2001:67c:2674:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2678::,2001:67c:2678:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:267c::,2001:67c:267c:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2680::,2001:67c:2680:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2684::,2001:67c:2684:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:2688::,2001:67c:2688:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:268c::,2001:67c:268c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2690::,2001:67c:2690:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:2694::,2001:67c:2694:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:2698::,2001:67c:2698:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:269c::,2001:67c:269c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:26a0::,2001:67c:26a0:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:26a4::,2001:67c:26a4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:26a8::,2001:67c:26a8:ffff:ffff:ffff:ffff:ffff,BE
-2001:67c:26ac::,2001:67c:26ac:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:26b0::,2001:67c:26b0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:26b4::,2001:67c:26b4:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:26b8::,2001:67c:26b8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:26bc::,2001:67c:26bc:ffff:ffff:ffff:ffff:ffff,RU
-2001:67c:26c0::,2001:67c:26c3:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:26d0::,2001:67c:26d0:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:26d4::,2001:67c:26d4:ffff:ffff:ffff:ffff:ffff,SK
-2001:67c:26d8::,2001:67c:26d8:ffff:ffff:ffff:ffff:ffff,FR
-2001:67c:26dc::,2001:67c:26dc:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:26e0::,2001:67c:26e0:ffff:ffff:ffff:ffff:ffff,PL
-2001:67c:26e4::,2001:67c:26e4:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:26e8::,2001:67c:26e8:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:26ec::,2001:67c:26ec:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:26f0::,2001:67c:26f0:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:26f4::,2001:67c:26f4:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:26f8::,2001:67c:26f8:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:26fc::,2001:67c:26fc:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2680::,2001:67c:26ff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2700::,2001:67c:2700:ffff:ffff:ffff:ffff:ffff,FI
2001:67c:2704::,2001:67c:2704:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2708::,2001:67c:2708:ffff:ffff:ffff:ffff:ffff,PL
@@ -1668,7 +1493,6 @@
2001:67c:29d8::,2001:67c:29d8:ffff:ffff:ffff:ffff:ffff,AE
2001:67c:29dc::,2001:67c:29dc:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:29e0::,2001:67c:29e0:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:29e4::,2001:67c:29e4:ffff:ffff:ffff:ffff:ffff,US
2001:67c:29e8::,2001:67c:29e8:ffff:ffff:ffff:ffff:ffff,TR
2001:67c:29ec::,2001:67c:29ec:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:29f0::,2001:67c:29f0:ffff:ffff:ffff:ffff:ffff,BG
@@ -1794,12 +1618,42 @@
2001:67c:2d80::,2001:67c:2dff:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2e00::,2001:67c:2e73:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2e74::,2001:67c:2e74:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2e75::,2001:67c:2eff:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2f00::,2001:67c:2f7b:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2e75::,2001:67c:2e7f:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2e80::,2001:67c:2eff:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2f00::,2001:67c:2f7b:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:2f7c::,2001:67c:2f7c:ffff:ffff:ffff:ffff:ffff,SE
-2001:67c:2f7d::,2001:67c:2f87:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2f7d::,2001:67c:2f7f:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2f80::,2001:67c:2f80:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2f84::,2001:67c:2f84:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2f88::,2001:67c:2f88:ffff:ffff:ffff:ffff:ffff,ZA
-2001:67c:2f89::,2001:67c:2fff:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2f8c::,2001:67c:2f8c:ffff:ffff:ffff:ffff:ffff,BG
+2001:67c:2f90::,2001:67c:2f90:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2f94::,2001:67c:2f94:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2f98::,2001:67c:2f98:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2f9c::,2001:67c:2f9c:ffff:ffff:ffff:ffff:ffff,CZ
+2001:67c:2fa0::,2001:67c:2fa0:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2fa4::,2001:67c:2fa4:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fa8::,2001:67c:2fa8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fac::,2001:67c:2fac:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:2fb0::,2001:67c:2fb0:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fb4::,2001:67c:2fb4:ffff:ffff:ffff:ffff:ffff,RO
+2001:67c:2fb8::,2001:67c:2fb8:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2fbc::,2001:67c:2fbc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fc0::,2001:67c:2fc0:ffff:ffff:ffff:ffff:ffff,FI
+2001:67c:2fc4::,2001:67c:2fc4:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2fcc::,2001:67c:2fcc:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2fd0::,2001:67c:2fd0:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2fd4::,2001:67c:2fd4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2fd8::,2001:67c:2fd8:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fdc::,2001:67c:2fdc:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2fe0::,2001:67c:2fe0:ffff:ffff:ffff:ffff:ffff,CH
+2001:67c:2fe4::,2001:67c:2fe4:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2fe8::,2001:67c:2fe8:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2fec::,2001:67c:2fec:ffff:ffff:ffff:ffff:ffff,PL
+2001:67c:2ff0::,2001:67c:2ff0:ffff:ffff:ffff:ffff:ffff,AT
+2001:67c:2ff4::,2001:67c:2ff4:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2ff8::,2001:67c:2ff8:ffff:ffff:ffff:ffff:ffff,GB
+2001:67c:2ffc::,2001:67c:2ffc:ffff:ffff:ffff:ffff:ffff,PL
2001:680::,2001:680:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:688::,2001:688:ffff:ffff:ffff:ffff:ffff:ffff,FR
2001:690::,2001:697:ffff:ffff:ffff:ffff:ffff:ffff,PT
@@ -1810,7 +1664,7 @@
2001:6c8::,2001:6cf:ffff:ffff:ffff:ffff:ffff:ffff,DK
2001:6d0::,2001:6d0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:6d8::,2001:6df:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2001:6e0::,2001:6e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:6e0::,2001:6e7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:6e8::,2001:6ef:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:6f0::,2001:6f7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:6f8::,2001:6f8:2ff:ffff:ffff:ffff:ffff:ffff,GB
@@ -1880,7 +1734,6 @@
2001:7f8:18::,2001:7f8:18:ffff:ffff:ffff:ffff:ffff,IE
2001:7f8:19::,2001:7f8:19:ffff:ffff:ffff:ffff:ffff,DE
2001:7f8:1a::,2001:7f8:1a:ffff:ffff:ffff:ffff:ffff,NL
-2001:7f8:1b::,2001:7f8:1b:ffff:ffff:ffff:ffff:ffff,BE
2001:7f8:1c::,2001:7f8:1c:ffff:ffff:ffff:ffff:ffff,CH
2001:7f8:1d::,2001:7f8:1d:ffff:ffff:ffff:ffff:ffff,FI
2001:7f8:1e::,2001:7f8:1e:ffff:ffff:ffff:ffff:ffff,RS
@@ -2102,9 +1955,8 @@
2001:8c0::,2001:8c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2001:8c8::,2001:8c8:ffff:ffff:ffff:ffff:ffff:ffff,RS
2001:8d0::,2001:8d7:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2001:8d8::,2001:8d8:1fe:ffff:ffff:ffff:ffff:ffff,DE
-2001:8d8:1ff::,2001:8d8:1ff:7fff:ffff:ffff:ffff:ffff,ES
-2001:8d8:1ff:8000::,2001:8d8:f7ff:ffff:ffff:ffff:ffff:ffff,DE
+2001:8d8::,2001:8d8:3ff:ffff:ffff:ffff:ffff:ffff,ES
+2001:8d8:400::,2001:8d8:f7ff:ffff:ffff:ffff:ffff:ffff,DE
2001:8e0::,2001:8e7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:8f0::,2001:8f3:ffff:ffff:ffff:ffff:ffff:ffff,GR
2001:8f8::,2001:8ff:ffff:ffff:ffff:ffff:ffff:ffff,AE
@@ -2116,7 +1968,9 @@
2001:918::,2001:91f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:920::,2001:920:18ff:ffff:ffff:ffff:ffff:ffff,GB
2001:920:1900::,2001:920:19ff:ffff:ffff:ffff:ffff:ffff,DE
-2001:920:1a00::,2001:920:5845:ffff:ffff:ffff:ffff:ffff,GB
+2001:920:1a00::,2001:920:3fff:ffff:ffff:ffff:ffff:ffff,GB
+2001:920:4000::,2001:920:43ff:ffff:ffff:ffff:ffff:ffff,BE
+2001:920:4400::,2001:920:5845:ffff:ffff:ffff:ffff:ffff,GB
2001:920:5846::,2001:920:5846:ffff:ffff:ffff:ffff:ffff,ES
2001:920:5847::,2001:923:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:924::,2001:924:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -2179,7 +2033,9 @@
2001:a60::,2001:a67:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:a68::,2001:a68:ffff:ffff:ffff:ffff:ffff:ffff,FI
2001:a70::,2001:a70:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:a78::,2001:a7f:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2001:a78::,2001:a7a:ff04:ffff:ffff:ffff:ffff:ffff,DE
+2001:a7a:ff05::,2001:a7a:ff05:ffff:ffff:ffff:ffff:ffff,CH
+2001:a7a:ff06::,2001:a7f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:a80::,2001:a80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:a88::,2001:a88:efff:ffff:ffff:ffff:ffff:ffff,GB
2001:a88:f000::,2001:a88:f000:ffff:ffff:ffff:ffff:ffff,FI
@@ -2240,7 +2096,9 @@
2001:ac8:75::,2001:ac8:78:ffff:ffff:ffff:ffff:ffff,IT
2001:ac8:79::,2001:ac8:79:ffff:ffff:ffff:ffff:ffff,GB
2001:ac8:7a::,2001:ac8:7b:ffff:ffff:ffff:ffff:ffff,FR
-2001:ac8:7c::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:7c::,2001:ac8:7c:ffff:ffff:ffff:ffff:ffff,GB
+2001:ac8:7d::,2001:ac8:7f:ffff:ffff:ffff:ffff:ffff,RS
+2001:ac8:80::,2001:ac8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:ad0::,2001:ad0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:ad8::,2001:ae1:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:ae8::,2001:ae8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -2408,78 +2266,26 @@
2001:df0:220::,2001:df0:23f:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:240::,2001:df0:24f:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:250::,2001:df0:29f:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:2a0::,2001:df0:2b0:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:2b1::,2001:df0:2b1:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:2b2::,2001:df0:2bf:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:2a0::,2001:df0:2a0:ffff:ffff:ffff:ffff:ffff,MY
+2001:df0:2a1::,2001:df0:2a1:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2a3::,2001:df0:2a3:ffff:ffff:ffff:ffff:ffff,IN
+2001:df0:2a4::,2001:df0:2a4:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2a5::,2001:df0:2a5:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2a6::,2001:df0:2a6:ffff:ffff:ffff:ffff:ffff,JP
+2001:df0:2a7::,2001:df0:2a7:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2a8::,2001:df0:2a8:ffff:ffff:ffff:ffff:ffff,PH
+2001:df0:2a9::,2001:df0:2aa:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2ab::,2001:df0:2ab:ffff:ffff:ffff:ffff:ffff,ID
+2001:df0:2ac::,2001:df0:2ac:ffff:ffff:ffff:ffff:ffff,SG
+2001:df0:2ad::,2001:df0:2ad:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2af::,2001:df0:2af:ffff:ffff:ffff:ffff:ffff,HK
+2001:df0:2b0::,2001:df0:2b7:ffff:ffff:ffff:ffff:ffff,AU
+2001:df0:2b8::,2001:df0:2bf:ffff:ffff:ffff:ffff:ffff,MY
2001:df0:2c0::,2001:df0:2e1:3114:ffff:ffff:ffff:ffff,JP
2001:df0:2e1:3115::,2001:df0:2e1:3115:ffff:ffff:ffff:ffff,ID
2001:df0:2e1:3116::,2001:df0:2ff:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:300::,2001:df0:319:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:400::,2001:df0:400:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:401::,2001:df0:401:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:402::,2001:df0:403:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:408::,2001:df0:408:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:409::,2001:df0:409:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:40a::,2001:df0:40a:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:40c::,2001:df0:40c:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:40d::,2001:df0:40d:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:40e::,2001:df0:40f:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:410::,2001:df0:410:ffff:ffff:ffff:ffff:ffff,VU
-2001:df0:411::,2001:df0:411:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:412::,2001:df0:412:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:413::,2001:df0:413:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:415::,2001:df0:415:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:418::,2001:df0:419:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:41a::,2001:df0:41a:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:41b::,2001:df0:41b:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:41c::,2001:df0:41c:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:41d::,2001:df0:41e:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:41f::,2001:df0:41f:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:420::,2001:df0:420:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:421::,2001:df0:421:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:422::,2001:df0:422:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:423::,2001:df0:423:ffff:ffff:ffff:ffff:ffff,CN
-2001:df0:425::,2001:df0:425:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:426::,2001:df0:426:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:427::,2001:df0:427:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:430::,2001:df0:43f:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:440::,2001:df0:440:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:441::,2001:df0:441:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:442::,2001:df0:443:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:444::,2001:df0:445:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:446::,2001:df0:446:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:447::,2001:df0:447:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:448::,2001:df0:448:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:449::,2001:df0:449:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:44a::,2001:df0:44a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:44b::,2001:df0:44b:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:44c::,2001:df0:44d:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:44e::,2001:df0:44e:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:44f::,2001:df0:44f:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:450::,2001:df0:450:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:451::,2001:df0:451:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:452::,2001:df0:452:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:453::,2001:df0:453:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:454::,2001:df0:454:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:455::,2001:df0:455:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:456::,2001:df0:456:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:457::,2001:df0:457:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:45a::,2001:df0:45a:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:45c::,2001:df0:45d:ffff:ffff:ffff:ffff:ffff,IN
-2001:df0:45f::,2001:df0:45f:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df0:460::,2001:df0:460:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:461::,2001:df0:461:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:462::,2001:df0:462:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:464::,2001:df0:464:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:465::,2001:df0:465:ffff:ffff:ffff:ffff:ffff,HK
-2001:df0:466::,2001:df0:466:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:467::,2001:df0:467:ffff:ffff:ffff:ffff:ffff,JP
-2001:df0:468::,2001:df0:469:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:46a::,2001:df0:46a:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:46b::,2001:df0:46b:ffff:ffff:ffff:ffff:ffff,MY
-2001:df0:46c::,2001:df0:46c:ffff:ffff:ffff:ffff:ffff,ID
-2001:df0:500::,2001:df0:600:ffff:ffff:ffff:ffff:ffff,AU
-2001:df0:700::,2001:df0:700:ffff:ffff:ffff:ffff:ffff,PG
+2001:df0:400::,2001:df0:7ff:ffff:ffff:ffff:ffff:ffff,MY
2001:df0:800::,2001:df0:800:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:900::,2001:df0:900:ffff:ffff:ffff:ffff:ffff,NP
2001:df0:a00::,2001:df0:a00:ffff:ffff:ffff:ffff:ffff,ID
@@ -3195,7 +3001,6 @@
2001:df3:e00::,2001:df3:e00:ffff:ffff:ffff:ffff:ffff,SG
2001:df3:f00::,2001:df3:f00:ffff:ffff:ffff:ffff:ffff,MY
2001:df3:1000::,2001:df3:1000:ffff:ffff:ffff:ffff:ffff,BD
-2001:df3:1100::,2001:df3:1100:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:1200::,2001:df3:1200:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:1300::,2001:df3:1300:ffff:ffff:ffff:ffff:ffff,MM
2001:df3:1400::,2001:df3:1400:ffff:ffff:ffff:ffff:ffff,AU
@@ -3916,7 +3721,6 @@
2001:df6:d00::,2001:df6:d00:ffff:ffff:ffff:ffff:ffff,PH
2001:df6:e00::,2001:df6:e00:ffff:ffff:ffff:ffff:ffff,HK
2001:df6:f00::,2001:df6:f00:ffff:ffff:ffff:ffff:ffff,CN
-2001:df6:1000::,2001:df6:1000:ffff:ffff:ffff:ffff:ffff,PH
2001:df6:1100::,2001:df6:1100:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:1200::,2001:df6:1200:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:1300::,2001:df6:1300:ffff:ffff:ffff:ffff:ffff,ID
@@ -4250,17 +4054,33 @@
2001:df7:7600::,2001:df7:7600:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:7700::,2001:df7:7700:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:7800::,2001:df7:7800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df7:7900::,2001:df7:7900:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:7a00::,2001:df7:7a00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:7b00::,2001:df7:7b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:7c00::,2001:df7:7c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df7:7d00::,2001:df7:7d00:ffff:ffff:ffff:ffff:ffff,PH
2001:df7:7e00::,2001:df7:7e00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:7f00::,2001:df7:7f00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df7:8100::,2001:df7:8100:ffff:ffff:ffff:ffff:ffff,PH
2001:df7:8200::,2001:df7:8200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:8300::,2001:df7:8300:ffff:ffff:ffff:ffff:ffff,BD
2001:df7:8400::,2001:df7:8401:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:8500::,2001:df7:8500:ffff:ffff:ffff:ffff:ffff,BD
2001:df7:8600::,2001:df7:8600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:8700::,2001:df7:8700:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:8800::,2001:df7:8800:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:8900::,2001:df7:8900:ffff:ffff:ffff:ffff:ffff,HK
2001:df7:8a00::,2001:df7:8a00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:8b00::,2001:df7:8b00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:8d00::,2001:df7:8d00:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:8e00::,2001:df7:8e00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df7:8f00::,2001:df7:8f00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df7:9100::,2001:df7:9100:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:9200::,2001:df7:921f:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:9300::,2001:df7:9300:ffff:ffff:ffff:ffff:ffff,IN
+2001:df7:9500::,2001:df7:9500:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:9600::,2001:df7:9600:ffff:ffff:ffff:ffff:ffff,HK
+2001:df7:9700::,2001:df7:9700:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:9800::,2001:df7:9800:ffff:ffff:ffff:ffff:ffff,NZ
2001:df7:9c00::,2001:df7:9c00:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:9e00::,2001:df7:9e00:ffff:ffff:ffff:ffff:ffff,SG
@@ -4310,7 +4130,7 @@
2001:df7:fc00::,2001:df7:fc00:ffff:ffff:ffff:ffff:ffff,SG
2001:df7:fe00::,2001:df7:fe00:ffff:ffff:ffff:ffff:ffff,ID
2001:df8::,2001:df8:ffff:ffff:ffff:ffff:ffff:ffff,TH
-2001:df9::,2001:df9:ffff:ffff:ffff:ffff:ffff:ffff,NC
+2001:df9::,2001:df9:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:dfa::,2001:dfa:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:e00::,2001:e01:ffff:ffff:ffff:ffff:ffff:ffff,ID
2001:e08::,2001:e08:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -4707,9 +4527,9 @@
2001:1be8::,2001:1be8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:1bf0::,2001:1bf7:ffff:ffff:ffff:ffff:ffff:ffff,EE
2001:1bf8::,2001:1bff:ffff:ffff:ffff:ffff:ffff:ffff,LV
-2001:1c00::,2001:1c03:4fff:ffff:ffff:ffff:ffff:ffff,NL
-2001:1c03:5000::,2001:1c03:53ff:ffff:ffff:ffff:ffff:ffff,LV
-2001:1c03:5400::,2001:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2001:1c00::,2001:1c03:5301:ffff:ffff:ffff:ffff:ffff,NL
+2001:1c03:5302::,2001:1c03:5303:ffff:ffff:ffff:ffff:ffff,LV
+2001:1c03:5304::,2001:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:2001:1000::,2001:2001:10ff:ffff:ffff:ffff:ffff:ffff,DK
2001:2001:3000::,2001:2001:30ff:ffff:ffff:ffff:ffff:ffff,SE
2001:2001:4000::,2001:2001:40ff:ffff:ffff:ffff:ffff:ffff,SE
@@ -4721,8 +4541,15 @@
2001:2005::,2001:2005:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:2010::,2001:2012:ffff:ffff:ffff:ffff:ffff:ffff,DK
2001:2020::,2001:2021:ffff:ffff:ffff:ffff:ffff:ffff,LT
-2001:2030::,2001:2030::ffff:ffff:ffff:ffff:ffff,US
-2001:2030:1::,2001:2030:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2001:2030::,2001:2030::1c:6129:fc61:4a70:fc90,SE
+2001:2030::1c:6129:fc61:4a70:fc91,2001:2030::1c:6129:fc61:4a70:fc91,US
+2001:2030::1c:6129:fc61:4a70:fc92,2001:2030::1d:b985:4aff:c872:8159,SE
+2001:2030::1d:b985:4aff:c872:815a,2001:2030::1d:b985:4aff:c872:815a,US
+2001:2030::1d:b985:4aff:c872:815b,2001:2030::3e:344c:f8ec:e9b9:2c26,SE
+2001:2030::3e:344c:f8ec:e9b9:2c27,2001:2030::3e:344c:f8ec:e9b9:2c27,US
+2001:2030::3e:344c:f8ec:e9b9:2c28,2001:2030::3f:4144:aaf7:902:29f9,SE
+2001:2030::3f:4144:aaf7:902:29fa,2001:2030::3f:4144:aaf7:902:29fa,US
+2001:2030::3f:4144:aaf7:902:29fb,2001:2030:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:2031:0:5::,2001:2031::1b:ffff:ffff:ffff:ffff,CA
2001:2031:0:1d::,2001:2031::1d:ffff:ffff:ffff:ffff,CA
2001:2040::,2001:2040:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -4887,7 +4714,7 @@
2001:43f8:7c0::,2001:43f8:7c0:ffff:ffff:ffff:ffff:ffff,AO
2001:43f8:7d0::,2001:43f8:7d0:ffff:ffff:ffff:ffff:ffff,NG
2001:43f8:7e0::,2001:43f8:7e0:ffff:ffff:ffff:ffff:ffff,ZA
-2001:43f8:7f0::,2001:43f8:7f0:ffff:ffff:ffff:ffff:ffff,SD
+2001:43f8:7f0::,2001:43f8:7f1:ffff:ffff:ffff:ffff:ffff,SD
2001:43f8:800::,2001:43f8:83f:ffff:ffff:ffff:ffff:ffff,GH
2001:43f8:900::,2001:43f8:900:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:920::,2001:43f8:920:ffff:ffff:ffff:ffff:ffff,ZA
@@ -4999,6 +4826,7 @@
2001:43f8:1310::,2001:43f8:1310:ffff:ffff:ffff:ffff:ffff,NG
2001:43f8:1320::,2001:43f8:1320:ffff:ffff:ffff:ffff:ffff,UG
2001:43f8:1330::,2001:43f8:1330:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:1340::,2001:43f8:1340:ffff:ffff:ffff:ffff:ffff,NG
2001:4400::,2001:4403:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2001:4408::,2001:4408:ffff:ffff:ffff:ffff:ffff:ffff,IN
2001:4410::,2001:4410:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -5020,9 +4848,7 @@
2001:44b0::,2001:44b0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:44b8::,2001:44b8:ffff:ffff:ffff:ffff:ffff:ffff,AU
2001:44c0::,2001:44c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
-2001:44c8::,2001:44c8:4242:7fff:ffff:ffff:ffff:ffff,TH
-2001:44c8:4242:8000::,2001:44c8:4242:bfff:ffff:ffff:ffff:ffff,US
-2001:44c8:4242:c000::,2001:44c8:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2001:44c8::,2001:44c8:ffff:ffff:ffff:ffff:ffff:ffff,TH
2001:44d0::,2001:44df:ffff:ffff:ffff:ffff:ffff:ffff,KR
2001:44f0::,2001:44f0:ffff:ffff:ffff:ffff:ffff:ffff,TW
2001:4500::,2001:4500:ffff:ffff:ffff:ffff:ffff:ffff,TW
@@ -5173,8 +4999,9 @@
2001:4878:8215::,2001:4878:8215:ffff:ffff:ffff:ffff:ffff,GB
2001:4878:8216::,2001:4878:821f:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8220::,2001:4878:8220:ffff:ffff:ffff:ffff:ffff,SE
-2001:4878:8221::,2001:4878:8227:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:8228::,2001:4878:822f:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:8221::,2001:4878:8224:ffff:ffff:ffff:ffff:ffff,IL
+2001:4878:8225::,2001:4878:8225:ffff:ffff:ffff:ffff:ffff,PL
+2001:4878:8226::,2001:4878:822f:ffff:ffff:ffff:ffff:ffff,IL
2001:4878:8230::,2001:4878:823f:ffff:ffff:ffff:ffff:ffff,GB
2001:4878:8240::,2001:4878:8241:ffff:ffff:ffff:ffff:ffff,US
2001:4878:8242::,2001:4878:8242:ffff:ffff:ffff:ffff:ffff,NL
@@ -5199,37 +5026,41 @@
2001:4878:8348::,2001:4878:8348:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:8349::,2001:4878:a128:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a129::,2001:4878:a129:ffff:ffff:ffff:ffff:ffff,CR
-2001:4878:a12a::,2001:4878:a1ff:ffff:ffff:ffff:ffff:ffff,US
-2001:4878:a200::,2001:4878:a203:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a12a::,2001:4878:a203:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a204::,2001:4878:a204:ffff:ffff:ffff:ffff:ffff,DE
-2001:4878:a205::,2001:4878:a214:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a205::,2001:4878:a214:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a215::,2001:4878:a215:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:a216::,2001:4878:a21f:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a216::,2001:4878:a21f:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a220::,2001:4878:a220:ffff:ffff:ffff:ffff:ffff,SE
-2001:4878:a221::,2001:4878:a224:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a221::,2001:4878:a224:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a225::,2001:4878:a225:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:a226::,2001:4878:a227:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a226::,2001:4878:a227:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a228::,2001:4878:a228:ffff:ffff:ffff:ffff:ffff,IL
-2001:4878:a229::,2001:4878:a233:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a229::,2001:4878:a233:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a234::,2001:4878:a234:ffff:ffff:ffff:ffff:ffff,GB
-2001:4878:a235::,2001:4878:a241:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a235::,2001:4878:a241:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a242::,2001:4878:a242:ffff:ffff:ffff:ffff:ffff,NL
2001:4878:a243::,2001:4878:a243:ffff:ffff:ffff:ffff:ffff,PL
-2001:4878:a244::,2001:4878:a245:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a244::,2001:4878:a245:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a246::,2001:4878:a246:ffff:ffff:ffff:ffff:ffff,DK
-2001:4878:a247::,2001:4878:a248:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a247::,2001:4878:a248:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a249::,2001:4878:a249:ffff:ffff:ffff:ffff:ffff,FR
-2001:4878:a24a::,2001:4878:a24f:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a24a::,2001:4878:a24f:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a250::,2001:4878:a250:ffff:ffff:ffff:ffff:ffff,IT
-2001:4878:a251::,2001:4878:a320:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a251::,2001:4878:a304:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a305::,2001:4878:a305:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a306::,2001:4878:a320:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a321::,2001:4878:a321:ffff:ffff:ffff:ffff:ffff,SG
2001:4878:a322::,2001:4878:a322:ffff:ffff:ffff:ffff:ffff,JP
2001:4878:a323::,2001:4878:a323:ffff:ffff:ffff:ffff:ffff,AU
2001:4878:a324::,2001:4878:a324:ffff:ffff:ffff:ffff:ffff,KR
-2001:4878:a325::,2001:4878:a33f:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a325::,2001:4878:a33f:ffff:ffff:ffff:ffff:ffff,US
2001:4878:a340::,2001:4878:a340:ffff:ffff:ffff:ffff:ffff,HK
-2001:4878:a341::,2001:4878:a3ff:ffff:ffff:ffff:ffff:ffff,IN
-2001:4878:a400::,2001:4878:c061:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a341::,2001:4878:a343:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a344::,2001:4878:a344:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a345::,2001:4878:a347:ffff:ffff:ffff:ffff:ffff,US
+2001:4878:a348::,2001:4878:a348:ffff:ffff:ffff:ffff:ffff,IN
+2001:4878:a349::,2001:4878:c061:ffff:ffff:ffff:ffff:ffff,US
2001:4878:c062::,2001:4878:c063:ffff:ffff:ffff:ffff:ffff,IN
2001:4878:c064::,2001:4878:c128:ffff:ffff:ffff:ffff:ffff,US
2001:4878:c129::,2001:4878:c129:ffff:ffff:ffff:ffff:ffff,CR
@@ -5272,7 +5103,9 @@
2001:4890::,2001:4890:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4898::,2001:4898:e80f:ffff:ffff:ffff:ffff:ffff,US
2001:4898:e810::,2001:4898:e810:ffff:ffff:ffff:ffff:ffff,BR
-2001:4898:e811::,2001:489a:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:4898:e811::,2001:4898:f627:ffff:ffff:ffff:ffff:ffff,US
+2001:4898:f628::,2001:4898:f628:ffff:ffff:ffff:ffff:ffff,CA
+2001:4898:f629::,2001:489a:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48a0::,2001:48a0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48a8::,2001:48a8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:48b0::,2001:48b0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -6293,7 +6126,12 @@
2400:cb00:179::,2400:cb00:179:ffff:ffff:ffff:ffff:ffff,PK
2400:cb00:17a::,2400:cb00:181:ffff:ffff:ffff:ffff:ffff,US
2400:cb00:182::,2400:cb00:182:ffff:ffff:ffff:ffff:ffff,MA
-2400:cb00:183::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:183::,2400:cb00:185:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:186::,2400:cb00:186:ffff:ffff:ffff:ffff:ffff,PK
+2400:cb00:187::,2400:cb00:187:ffff:ffff:ffff:ffff:ffff,US
+2400:cb00:188::,2400:cb00:188:ffff:ffff:ffff:ffff:ffff,PK
+2400:cb00:189::,2400:cb00:189:ffff:ffff:ffff:ffff:ffff,TR
+2400:cb00:18a::,2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff,US
2400:cb40::,2400:cb40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cb80::,2400:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:cbc0::,2400:cbc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -6616,7 +6454,7 @@
2401:1f80::,2401:1f80:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:1fc0::,2401:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:2000::,2401:2000:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2401:2001::,2401:2003:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2401:2001::,2401:2001:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:2040::,2401:2040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:2080::,2401:2080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:20c0::,2401:20c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
@@ -7455,15 +7293,15 @@
2401:fa00:38::,2401:fa00:3a:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:3b::,2401:fa00:3b:ffff:ffff:ffff:ffff:ffff,TW
2401:fa00:3c::,2401:fa00:3f:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:40::,2401:fa00:5f:ffff:ffff:ffff:ffff:ffff,CN
-2401:fa00:60::,2401:fa00:61:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:40::,2401:fa00:4f:ffff:ffff:ffff:ffff:ffff,CN
+2401:fa00:50::,2401:fa00:61:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:62::,2401:fa00:63:ffff:ffff:ffff:ffff:ffff,PH
2401:fa00:64::,2401:fa00:66:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:67::,2401:fa00:67:ffff:ffff:ffff:ffff:ffff,PH
2401:fa00:68::,2401:fa00:ef:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:f0::,2401:fa00:f1:ffff:ffff:ffff:ffff:ffff,TW
2401:fa00:f2::,2401:fa00:f2:ffff:ffff:ffff:ffff:ffff,MY
-2401:fa00:f3::,2401:fa00:f7:ffff:ffff:ffff:ffff:ffff,US
+2401:fa00:f3::,2401:fa00:f7:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:f8::,2401:fa00:fb:ffff:ffff:ffff:ffff:ffff,PH
2401:fa00:fc::,2401:fa00:fe:ffff:ffff:ffff:ffff:ffff,TW
2401:fa00:ff::,2401:fa00:ff:ffff:ffff:ffff:ffff:ffff,AU
@@ -7560,10 +7398,12 @@
2401:fa00:401:e00::,2401:fa00:401:fff:ffff:ffff:ffff:ffff,IN
2401:fa00:401:1000::,2401:fa00:401:11ff:ffff:ffff:ffff:ffff,PL
2401:fa00:401:1200::,2401:fa00:401:13ff:ffff:ffff:ffff:ffff,IE
-2401:fa00:401:1400::,2401:fa00:401:15ff:ffff:ffff:ffff:ffff,US
-2401:fa00:401:1600::,2401:fa00:401:19ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:401:1400::,2401:fa00:401:17ff:ffff:ffff:ffff:ffff,US
+2401:fa00:401:1800::,2401:fa00:401:19ff:ffff:ffff:ffff:ffff,IN
2401:fa00:401:1a00::,2401:fa00:401:1bff:ffff:ffff:ffff:ffff,DE
-2401:fa00:401:1c00::,2401:fa00:403:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:401:1c00::,2401:fa00:401:1dff:ffff:ffff:ffff:ffff,IN
+2401:fa00:401:1e00::,2401:fa00:401:21ff:ffff:ffff:ffff:ffff,US
+2401:fa00:401:2200::,2401:fa00:403:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:404::,2401:fa00:404:1ff:ffff:ffff:ffff:ffff,IL
2401:fa00:404:200::,2401:fa00:404:5ff:ffff:ffff:ffff:ffff,AU
2401:fa00:404:600::,2401:fa00:407:ffff:ffff:ffff:ffff:ffff,IN
@@ -7584,17 +7424,20 @@
2401:fa00:480:1200::,2401:fa00:480:13ff:ffff:ffff:ffff:ffff,US
2401:fa00:480:1400::,2401:fa00:480:14ff:ffff:ffff:ffff:ffff,IN
2401:fa00:480:1500::,2401:fa00:480:15ff:ffff:ffff:ffff:ffff,BE
-2401:fa00:480:1600::,2401:fa00:480:1dff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:1600::,2401:fa00:480:19ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:1a00::,2401:fa00:480:1bff:ffff:ffff:ffff:ffff,FI
+2401:fa00:480:1c00::,2401:fa00:480:1dff:ffff:ffff:ffff:ffff,IN
2401:fa00:480:1e00::,2401:fa00:480:1fff:ffff:ffff:ffff:ffff,JP
-2401:fa00:480:2000::,2401:fa00:480:25ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:2000::,2401:fa00:480:21ff:ffff:ffff:ffff:ffff,US
+2401:fa00:480:2200::,2401:fa00:480:25ff:ffff:ffff:ffff:ffff,IN
2401:fa00:480:2600::,2401:fa00:480:27ff:ffff:ffff:ffff:ffff,US
-2401:fa00:480:2800::,2401:fa00:480:29ff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:2800::,2401:fa00:480:29ff:ffff:ffff:ffff:ffff,BE
2401:fa00:480:2a00::,2401:fa00:480:2fff:ffff:ffff:ffff:ffff,US
2401:fa00:480:3000::,2401:fa00:480:31ff:ffff:ffff:ffff:ffff,HK
2401:fa00:480:3200::,2401:fa00:480:37ff:ffff:ffff:ffff:ffff,US
2401:fa00:480:3800::,2401:fa00:480:39ff:ffff:ffff:ffff:ffff,BR
2401:fa00:480:3a00::,2401:fa00:480:3bff:ffff:ffff:ffff:ffff,BE
-2401:fa00:480:3c00::,2401:fa00:480:3dff:ffff:ffff:ffff:ffff,US
+2401:fa00:480:3c00::,2401:fa00:480:3dff:ffff:ffff:ffff:ffff,IN
2401:fa00:480:3e00::,2401:fa00:480:3fff:ffff:ffff:ffff:ffff,AU
2401:fa00:480:4000::,2401:fa00:480:41ff:ffff:ffff:ffff:ffff,US
2401:fa00:480:4200::,2401:fa00:480:43ff:ffff:ffff:ffff:ffff,IN
@@ -7658,7 +7501,7 @@
2401:fa00:480:d400::,2401:fa00:480:d5ff:ffff:ffff:ffff:ffff,IN
2401:fa00:480:d600::,2401:fa00:480:d7ff:ffff:ffff:ffff:ffff,MY
2401:fa00:480:d800::,2401:fa00:480:d9ff:ffff:ffff:ffff:ffff,FR
-2401:fa00:480:da00::,2401:fa00:480:dbff:ffff:ffff:ffff:ffff,IN
+2401:fa00:480:da00::,2401:fa00:480:dbff:ffff:ffff:ffff:ffff,US
2401:fa00:480:dc00::,2401:fa00:480:ddff:ffff:ffff:ffff:ffff,IL
2401:fa00:480:de00::,2401:fa00:493:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:494::,2401:fa00:494:2ff:ffff:ffff:ffff:ffff,US
@@ -7828,7 +7671,6 @@
2402:2280::,2402:2280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:22c0::,2402:22c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:2300::,2402:2300:ffff:ffff:ffff:ffff:ffff:ffff,BD
-2402:2340::,2402:2340:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:2380::,2402:2380:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2402:23c0::,2402:23c0:ffff:ffff:ffff:ffff:ffff:ffff,NP
2402:2400::,2402:2400:ffff:ffff:ffff:ffff:ffff:ffff,SG
@@ -7969,7 +7811,6 @@
2402:4100::,2402:4100:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:4140::,2402:4140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4180::,2402:4180:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2402:41c0::,2402:41c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:4200::,2402:4200:ffff:ffff:ffff:ffff:ffff:ffff,JP
2402:4240::,2402:4240:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:4280::,2402:4280:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -8178,7 +8019,17 @@
2402:7740::,2402:7740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:7780::,2402:7780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:77c0::,2402:77c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
-2402:7800::,2402:7800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800::,2402:7800:ff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:100::,2402:7800:100:ffff:ffff:ffff:ffff:ffff,US
+2402:7800:101::,2402:7800:10f:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:110::,2402:7800:110:ffff:ffff:ffff:ffff:ffff,NZ
+2402:7800:111::,2402:7800:11f:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:120::,2402:7800:120:ffff:ffff:ffff:ffff:ffff,SG
+2402:7800:121::,2402:7800:12f:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:130::,2402:7800:130:ffff:ffff:ffff:ffff:ffff,HK
+2402:7800:131::,2402:7800:fff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:1000::,2402:7800:10ff:ffff:ffff:ffff:ffff:ffff,NZ
+2402:7800:1100::,2402:7800:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7840::,2402:7840:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:7880::,2402:7880:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:78c0::,2402:78c0:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -8736,9 +8587,27 @@
2403:300:a0a::,2403:300:a0a:ffff:ffff:ffff:ffff:ffff,HK
2403:300:a0b::,2403:300:a0b:ffff:ffff:ffff:ffff:ffff,SG
2403:300:a0c::,2403:300:a0c:ffff:ffff:ffff:ffff:ffff,JP
-2403:300:a0d::,2403:300:a13:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a0d::,2403:300:a0d:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a0e::,2403:300:a0e:ffff:ffff:ffff:ffff:ffff,JP
+2403:300:a0f::,2403:300:a13:ffff:ffff:ffff:ffff:ffff,SG
2403:300:a14::,2403:300:a14:ffff:ffff:ffff:ffff:ffff,JP
-2403:300:a15::,2403:300:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a15::,2403:300:a15:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a16::,2403:300:a16:ffff:ffff:ffff:ffff:ffff,KR
+2403:300:a17::,2403:300:a17:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a18::,2403:300:a18:ffff:ffff:ffff:ffff:ffff,TW
+2403:300:a19::,2403:300:a1f:ffff:ffff:ffff:ffff:ffff,SG
+2403:300:a20::,2403:300:a20:ffff:ffff:ffff:ffff:ffff,TW
+2403:300:a21::,2403:300:a41:ff:ffff:ffff:ffff:ffff,SG
+2403:300:a41:100::,2403:300:a41:2ff:ffff:ffff:ffff:ffff,JP
+2403:300:a41:300::,2403:300:a41:3ff:ffff:ffff:ffff:ffff,HK
+2403:300:a41:400::,2403:300:a41:5ff:ffff:ffff:ffff:ffff,SG
+2403:300:a41:600::,2403:300:a41:6ff:ffff:ffff:ffff:ffff,IN
+2403:300:a41:700::,2403:300:a41:7ff:ffff:ffff:ffff:ffff,HK
+2403:300:a41:800::,2403:300:a41:8ff:ffff:ffff:ffff:ffff,JP
+2403:300:a41:900::,2403:300:a41:9ff:ffff:ffff:ffff:ffff,HK
+2403:300:a41:a00::,2403:300:a50:ff:ffff:ffff:ffff:ffff,SG
+2403:300:a50:100::,2403:300:a50:1ff:ffff:ffff:ffff:ffff,AU
+2403:300:a50:200::,2403:300:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:340::,2403:340:ffff:ffff:ffff:ffff:ffff:ffff,US
2403:380::,2403:380:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:3c0::,2403:3c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -9962,49 +9831,97 @@
2404:2d80::,2404:2d80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:2dc0::,2404:2dc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:2e00::,2404:2e00:ffff:ffff:ffff:ffff:ffff:ffff,LA
+2404:2e40::,2404:2e40:ffff:ffff:ffff:ffff:ffff:ffff,TW
2404:2e80::,2404:2e80:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2404:2ec0::,2404:2ec0:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2404:2f40::,2404:2f40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:2f80::,2404:2f80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:2fc0::,2404:2fc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2404:3040::,2404:3040:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:3080::,2404:3080:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2404:30c0::,2404:30c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3100::,2404:3100:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2404:3140::,2404:3140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3180::,2404:3180:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2404:31c0::,2404:31c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3200::,2404:3200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2404:3240::,2404:3240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3280::,2404:3280:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2404:32c0::,2404:32c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3300::,2404:3300:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2404:3340::,2404:3340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3380::,2404:3380:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2404:33c0::,2404:33c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2404:3440::,2404:3440:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:3480::,2404:3480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2404:34c0::,2404:34c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:3500::,2404:3500:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2404:3540::,2404:3540:ffff:ffff:ffff:ffff:ffff:ffff,TW
2404:3580::,2404:3580:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:35c0::,2404:35c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3600::,2404:3601:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2404:3640::,2404:3640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3680::,2404:3680:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:36c0::,2404:36c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3700::,2404:3700:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2404:3740::,2404:3740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3780::,2404:3780:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2404:37c0::,2404:37c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3800::,2404:3800:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2404:3840::,2404:3840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3880::,2404:3880:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2404:38c0::,2404:38c0:ffff:ffff:ffff:ffff:ffff:ffff,TW
2404:3900::,2404:3900:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:3940::,2404:3940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3980::,2404:3980:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2404:39c0::,2404:39c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:3a00::,2404:3a00:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2404:3a40::,2404:3a40:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:3a80::,2404:3a80:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2404:3ac0::,2404:3ac0:ffff:ffff:ffff:ffff:ffff:ffff,TH
2404:3b00::,2404:3b00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2404:3b40::,2404:3b40:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2404:3bc0::,2404:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3c00::,2404:3c00:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2404:3c40::,2404:3c40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3c80::,2404:3c80:ffff:ffff:ffff:ffff:ffff:ffff,PK
+2404:3cc0::,2404:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:3d00::,2404:3d00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2404:3d40::,2404:3d40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:3d80::,2404:3d80:7fff:ffff:ffff:ffff:ffff:ffff,IN
2404:3d80:8000::,2404:3d80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2404:3dc0::,2404:3dc0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:3e00::,2404:3e00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:3e40::,2404:3e40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:3e80::,2404:3e80:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:3ec0::,2404:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:3f00::,2404:3f00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2404:3f40::,2404:3f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:3f80::,2404:3f80:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2404:3fc0::,2404:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2404:4040::,2404:4040:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:4080::,2404:4080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2404:40c0::,2404:40c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:4100::,2404:4100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2404:4140::,2404:4140:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:4180::,2404:4180:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2404:41c0::,2404:41c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:4200::,2404:4200:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2404:4240::,2404:4240:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:4280::,2404:4280:ffff:ffff:ffff:ffff:ffff:ffff,HK
2404:4300::,2404:4300:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2404:4340::,2404:4340:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:4380::,2404:4380:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2404:43c0::,2404:43c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:4400::,2404:440f:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2404:4440::,2404:4440:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:4480::,2404:4480:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2404:44c0::,2404:44c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2404:4540::,2404:4540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2404:4580::,2404:4580:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2404:45c0::,2404:45c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:4600::,2404:4600:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2404:4640::,2404:4640:ffff:ffff:ffff:ffff:ffff:ffff,ID
2404:4680::,2404:4680:ffff:ffff:ffff:ffff:ffff:ffff,BD
2404:4700::,2404:4700:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:4780::,2404:4780:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -10354,11 +10271,7 @@
2404:f801:8050::,2404:f801:8050:ffff:ffff:ffff:ffff:ffff,JP
2404:f801:8051::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:8058::,2404:f801:8058:ffff:ffff:ffff:ffff:ffff,IN
-2404:f801:8059::,2404:f801:8fff:ffff:ffff:ffff:ffff:ffff,SG
-2404:f801:9000::,2404:f801:9000:17:ffff:ffff:ffff:ffff,CN
-2404:f801:9000:18::,2404:f801:9000:1f:ffff:ffff:ffff:ffff,SG
-2404:f801:9000:20::,2404:f801:93ff:ffff:ffff:ffff:ffff:ffff,CN
-2404:f801:9400::,2404:f801:e7ff:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8059::,2404:f801:e7ff:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:e800::,2404:f801:ebff:ffff:ffff:ffff:ffff:ffff,AU
2404:f801:ec00::,2404:f801:ffff:ffff:ffff:ffff:ffff:ffff,SG
2404:f880::,2404:f880:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -10439,7 +10352,9 @@
2405:2000:400:300::,2405:2000:400:3ff:ffff:ffff:ffff:ffff,HK
2405:2000:400:400::,2405:2000:400:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:401::,2405:2000:401:ffff:ffff:ffff:ffff:ffff,HK
-2405:2000:402::,2405:2000:500:ffff:ffff:ffff:ffff:ffff,IN
+2405:2000:402::,2405:2000:406:ffff:ffff:ffff:ffff:ffff,IN
+2405:2000:407::,2405:2000:407:ffff:ffff:ffff:ffff:ffff,HK
+2405:2000:408::,2405:2000:500:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:501::,2405:2000:501:ffff:ffff:ffff:ffff:ffff,HK
2405:2000:502::,2405:2000:7ff:ffff:ffff:ffff:ffff:ffff,IN
2405:2000:800::,2405:2000:800:ff:ffff:ffff:ffff:ffff,SG
@@ -10506,7 +10421,11 @@
2405:2300::,2405:2300:feff:ffff:ffff:ffff:ffff:ffff,SG
2405:2300:ff00::,2405:2300:ff05:ffff:ffff:ffff:ffff:ffff,IN
2405:2300:ff06::,2405:2300:ff07:ffff:ffff:ffff:ffff:ffff,AU
-2405:2300:ff08::,2405:2300:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2405:2300:ff08::,2405:2300:ff09:ffff:ffff:ffff:ffff:ffff,SG
+2405:2300:ff0a::,2405:2300:ff0b:ffff:ffff:ffff:ffff:ffff,CN
+2405:2300:ff0c::,2405:2300:ff3f:ffff:ffff:ffff:ffff:ffff,SG
+2405:2300:ff40::,2405:2300:ff7f:ffff:ffff:ffff:ffff:ffff,IN
+2405:2300:ff80::,2405:2300:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:2380::,2405:2380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:2400::,2405:2400:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:2480::,2405:2480:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -10737,8 +10656,8 @@
2405:9800:b960:1000::,2405:9800:b960:1fff:ffff:ffff:ffff:ffff,TH
2405:9800:b960:2000::,2405:9800:b960:47ff:ffff:ffff:ffff:ffff,JP
2405:9800:b960:4800::,2405:9800:b960:5fff:ffff:ffff:ffff:ffff,TH
-2405:9800:b960:6000::,2405:9800:b96f:ffff:ffff:ffff:ffff:ffff,JP
-2405:9800:b970::,2405:9800:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2405:9800:b960:6000::,2405:9800:b97f:ffff:ffff:ffff:ffff:ffff,JP
+2405:9800:b980::,2405:9800:ffff:ffff:ffff:ffff:ffff:ffff,TH
2405:9880::,2405:9880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9900::,2405:9900:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:9980::,2405:9980:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11078,7 +10997,6 @@
2406:4e80::,2406:4e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:4f00::,2406:4f00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:4f80::,2406:4f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:5000::,2406:5000:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:5080::,2406:5080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:5100::,2406:5100:ffff:ffff:ffff:ffff:ffff:ffff,AU
2406:5180::,2406:5180:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11819,7 +11737,6 @@
2407:9300::,2407:9300:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:9380::,2407:9380:ffff:ffff:ffff:ffff:ffff:ffff,SG
2407:9400::,2407:9400:ffff:ffff:ffff:ffff:ffff:ffff,MY
-2407:9480::,2407:9480:ffff:ffff:ffff:ffff:ffff:ffff,TH
2407:9500::,2407:9500:ffff:ffff:ffff:ffff:ffff:ffff,NP
2407:9580::,2407:9580:ffff:ffff:ffff:ffff:ffff:ffff,JP
2407:9680::,2407:9680:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -12078,8 +11995,8 @@
2600:1f01:4802::,2600:1f01:480f:ffff:ffff:ffff:ffff:ffff,US
2600:1f01:4810::,2600:1f01:4811:ffff:ffff:ffff:ffff:ffff,FR
2600:1f01:4812::,2600:1f01:481f:ffff:ffff:ffff:ffff:ffff,US
-2600:1f01:4820::,2600:1f01:4821:ffff:ffff:ffff:ffff:ffff,IE
-2600:1f01:4822::,2600:1f01:482f:ffff:ffff:ffff:ffff:ffff,US
+2600:1f01:4820::,2600:1f01:4822:ff:ffff:ffff:ffff:ffff,IE
+2600:1f01:4822:100::,2600:1f01:482f:ffff:ffff:ffff:ffff:ffff,US
2600:1f01:4830::,2600:1f01:4831:ffff:ffff:ffff:ffff:ffff,DE
2600:1f01:4832::,2600:1f01:483f:ffff:ffff:ffff:ffff:ffff,US
2600:1f01:4840::,2600:1f01:4841:ffff:ffff:ffff:ffff:ffff,BR
@@ -12095,7 +12012,8 @@
2600:1f01:48c0::,2600:1f01:48c1:ffff:ffff:ffff:ffff:ffff,CA
2600:1f01:48c2::,2600:1f01:48cf:ffff:ffff:ffff:ffff:ffff,US
2600:1f01:48d0::,2600:1f01:48d1:ffff:ffff:ffff:ffff:ffff,SE
-2600:1f01:48d2::,2600:1f10:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:1f01:48d2::,2600:1f01:48d3:ffff:ffff:ffff:ffff:ffff,AU
+2600:1f01:48d4::,2600:1f10:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1f11::,2600:1f11:fff:ffff:ffff:ffff:ffff:ffff,CA
2600:1f11:1000::,2600:1f1d:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:1f1e::,2600:1f1e:fff:ffff:ffff:ffff:ffff:ffff,BR
@@ -12147,7 +12065,7 @@
2600:3200::,2600:320f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3300::,2600:340f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3800::,2600:380f:ffff:ffff:ffff:ffff:ffff:ffff,US
-2600:3c00::,2600:3c03:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:3c00::,2600:3c0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:4000::,2600:40ff:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:4400::,2600:4407:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:4800::,2600:480f:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12186,8 +12104,16 @@
2602:233::,2602:233:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:240::,2602:25f:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:300::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe0e::,2602:fe0e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe0f::,2602:fe0f:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe10::,2602:fe10:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe11::,2602:fe11:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe12::,2602:fe12:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe13::,2602:fe13:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe14::,2602:fe14:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe15::,2602:fe15:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe16::,2602:fe16:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fe17::,2602:fe17:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:fe18::,2602:fe18:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fe19::,2602:fe19:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fe1a::,2602:fe1a:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:fe1b::,2602:fe1b:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -12440,7 +12366,6 @@
2602:ff28::,2602:ff28:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff29::,2602:ff29:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2a::,2602:ff2b:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff2d::,2602:ff2d:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2e::,2602:ff2e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff2f::,2602:ff2f:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff30::,2602:ff30:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -12635,17 +12560,15 @@
2602:fffc::,2602:fffc:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:fffd::,2602:fffd:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ffff::,2602:ffff:fff:ffff:ffff:ffff:ffff:ffff,US
-2603::,2603:1005:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603::,2603:fff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1000::,2603:1000:1ff:ffff:ffff:ffff:ffff:ffff,ZA
+2603:1000:200::,2603:1005:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1006::,2603:1006::b:ffff:ffff:ffff:ffff,ZA
2603:1006:0:c::,2603:1006::ffff:ffff:ffff:ffff:ffff,US
-2603:1006:1::,2603:1006:1:7ff:ffff:ffff:ffff:ffff,ZA
-2603:1006:1:800::,2603:1006:1:ffff:ffff:ffff:ffff:ffff,US
-2603:1006:2::,2603:1006:2:7ff:ffff:ffff:ffff:ffff,ZA
-2603:1006:2:800::,2603:1006:ffff:ffff:ffff:ffff:ffff:ffff,US
-2603:1007::,2603:1007::ffff:ffff:ffff:ffff:ffff,ZA
-2603:1007:1::,2603:1007:ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1007:100::,2603:1007:101:ffff:ffff:ffff:ffff:ffff,ZA
-2603:1007:102::,2603:100f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1006:1::,2603:1006:2:ffff:ffff:ffff:ffff:ffff,ZA
+2603:1006:3::,2603:1006:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1007::,2603:1007:1ff:ffff:ffff:ffff:ffff:ffff,ZA
+2603:1007:200::,2603:100f:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1010::,2603:1010:2ff:ffff:ffff:ffff:ffff:ffff,AU
2603:1010:300::,2603:1010:3ff:ffff:ffff:ffff:ffff:ffff,US
2603:1010:400::,2603:1010:4ff:ffff:ffff:ffff:ffff:ffff,AU
@@ -12677,8 +12600,8 @@
2603:1020:800::,2603:1020:9ff:ffff:ffff:ffff:ffff:ffff,FR
2603:1020:a00::,2603:1020:bff:ffff:ffff:ffff:ffff:ffff,CH
2603:1020:c00::,2603:1020:dff:ffff:ffff:ffff:ffff:ffff,DE
-2603:1020:e00::,2603:1020:eff:ffff:ffff:ffff:ffff:ffff,NO
-2603:1020:f00::,2603:1023:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1020:e00::,2603:1020:fff:ffff:ffff:ffff:ffff:ffff,NO
+2603:1020:1000::,2603:1023:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1024::,2603:1024:ff:ffff:ffff:ffff:ffff:ffff,IE
2603:1024:100::,2603:1025:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1026::,2603:1026:2:ffff:ffff:ffff:ffff:ffff,IE
@@ -12697,17 +12620,11 @@
2603:1026:2e::,2603:1026:2e:ffff:ffff:ffff:ffff:ffff,US
2603:1026:2f::,2603:1026:2f:ffff:ffff:ffff:ffff:ffff,FI
2603:1026:30::,2603:1026:ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1026:100::,2603:1026:10f:ffff:ffff:ffff:ffff:ffff,FR
-2603:1026:110::,2603:1026:11f:ffff:ffff:ffff:ffff:ffff,US
-2603:1026:120::,2603:1026:12f:ffff:ffff:ffff:ffff:ffff,FR
-2603:1026:130::,2603:1026:1ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:100::,2603:1026:1ff:ffff:ffff:ffff:ffff:ffff,FR
2603:1026:200::,2603:1026:2ff:ffff:ffff:ffff:ffff:ffff,NL
2603:1026:300::,2603:1026:3ff:ffff:ffff:ffff:ffff:ffff,AT
2603:1026:400::,2603:1026:6ff:ffff:ffff:ffff:ffff:ffff,GB
-2603:1026:700::,2603:1026:70f:ffff:ffff:ffff:ffff:ffff,FR
-2603:1026:710::,2603:1026:71f:ffff:ffff:ffff:ffff:ffff,US
-2603:1026:720::,2603:1026:72f:ffff:ffff:ffff:ffff:ffff,FR
-2603:1026:730::,2603:1026:7ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:700::,2603:1026:7ff:ffff:ffff:ffff:ffff:ffff,FR
2603:1026:800::,2603:1026:8ff:ffff:ffff:ffff:ffff:ffff,GB
2603:1026:900::,2603:1026:bff:ffff:ffff:ffff:ffff:ffff,US
2603:1026:c00::,2603:1026:c00:1:ffff:ffff:ffff:ffff,GB
@@ -12837,7 +12754,8 @@
2603:1046:c02::,2603:1046:c02:ffff:ffff:ffff:ffff:ffff,HK
2603:1046:c03::,2603:1046:c03:ffff:ffff:ffff:ffff:ffff,MY
2603:1046:c04::,2603:1046:c06:ffff:ffff:ffff:ffff:ffff,IN
-2603:1046:c07::,2603:1046:c08:ffff:ffff:ffff:ffff:ffff,KR
+2603:1046:c07::,2603:1046:c08:fff:ffff:ffff:ffff:ffff,KR
+2603:1046:c08:1000::,2603:1046:c08:ffff:ffff:ffff:ffff:ffff,US
2603:1046:c09::,2603:1046:c0a:ffff:ffff:ffff:ffff:ffff,JP
2603:1046:c0b::,2603:1046:c0c:ffff:ffff:ffff:ffff:ffff,AE
2603:1046:c0d::,2603:1046:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12913,10 +12831,8 @@
2603:1049:e00::,2603:1049:eff:ffff:ffff:ffff:ffff:ffff,IN
2603:1049:f00::,2603:1049:fff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:1000::,2603:1049:10ff:ffff:ffff:ffff:ffff:ffff,IN
-2603:1049:1100::,2603:1050::ffff:ffff:ffff:ffff:ffff,US
-2603:1050:1::,2603:1050:3:ffff:ffff:ffff:ffff:ffff,BR
-2603:1050:4::,2603:1050:ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1050:100::,2603:1050:1ff:ffff:ffff:ffff:ffff:ffff,BR
+2603:1049:1100::,2603:104f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1050::,2603:1050:1ff:ffff:ffff:ffff:ffff:ffff,BR
2603:1050:200::,2603:1050:20f:ffff:ffff:ffff:ffff:ffff,US
2603:1050:210::,2603:1050:21f:ffff:ffff:ffff:ffff:ffff,CL
2603:1050:220::,2603:1050:2ff:ffff:ffff:ffff:ffff:ffff,US
@@ -13359,7 +13275,6 @@
2604:6400::,2604:6400:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:6440::,2604:6440:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:6480::,2604:6480:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:64c0::,2604:64c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:6500::,2604:6500:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:6540::,2604:6540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:6580::,2604:6580:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -14114,7 +14029,11 @@
2605:2c0::,2605:2c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:300::,2605:300:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:340::,2605:340:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:380::,2605:380:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:380::,2605:380:18:ffff:ffff:ffff:ffff:ffff,US
+2605:380:19::,2605:380:19:ffff:ffff:ffff:ffff:ffff,BR
+2605:380:1a::,2605:380:53:ffff:ffff:ffff:ffff:ffff,US
+2605:380:54::,2605:380:55:ffff:ffff:ffff:ffff:ffff,CA
+2605:380:56::,2605:380:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3c0::,2605:3c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:400::,2605:400:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:440::,2605:440:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14171,18 +14090,31 @@
2605:11c0::,2605:11c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:1240::,2605:1240:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:1280::,2605:1280:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:12c0::,2605:12c0:ffff:ffff:ffff:ffff:ffff:ffff,PR
2605:1300::,2605:1300:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:1340::,2605:1340:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1380::,2605:1380:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:13c0::,2605:13c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1400::,2605:1400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:1440::,2605:1440:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1480::,2605:1480:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:14c0::,2605:14c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1500::,2605:1500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:1540::,2605:1540:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1580::,2605:1580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:15c0::,2605:15c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1600::,2605:1600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:1640::,2605:1640:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1680::,2605:1680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:16c0::,2605:16c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1700::,2605:1700:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2605:1740::,2605:1740:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:1780::,2605:1780:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:17c0::,2605:17c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1800::,2605:1800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:1840::,2605:1840:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1880::,2605:1880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:18c0::,2605:18c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1900::,2605:1900:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1980::,2605:1980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:1a00::,2605:1a00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14499,7 +14431,6 @@
2605:b580::,2605:b580:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b600::,2605:b600:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:b680::,2605:b680:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:b700::,2605:b700:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b780::,2605:b780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b800::,2605:b800:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:b880::,2605:b880:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -14515,7 +14446,6 @@
2605:bd80::,2605:bd80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:be00::,2605:be00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:be80::,2605:be80:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:bf00::,2605:bf00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:bf80::,2605:bf80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:c000::,2605:c000:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:c080::,2605:c080:ffff:ffff:ffff:ffff:ffff:ffff,GD
@@ -14730,49 +14660,71 @@
2606:2800:420b::,2606:2800:420b:ffff:ffff:ffff:ffff:ffff,BR
2606:2800:420c::,2606:2800:420c:ffff:ffff:ffff:ffff:ffff,US
2606:2800:420d::,2606:2800:420d:ffff:ffff:ffff:ffff:ffff,EC
-2606:2800:420e::,2606:2800:5000:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:420e::,2606:2800:426c:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:426d::,2606:2800:426d:ffff:ffff:ffff:ffff:ffff,MX
+2606:2800:426e::,2606:2800:5000:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5001::,2606:2800:5001:ffff:ffff:ffff:ffff:ffff,ES
2606:2800:5002::,2606:2800:500f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5010::,2606:2800:5011:ffff:ffff:ffff:ffff:ffff,GB
-2606:2800:5012::,2606:2800:501f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5012::,2606:2800:501e:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:501f::,2606:2800:501f:ffff:ffff:ffff:ffff:ffff,GB
2606:2800:5020::,2606:2800:5021:ffff:ffff:ffff:ffff:ffff,DE
2606:2800:5022::,2606:2800:5030:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5031::,2606:2800:5033:ffff:ffff:ffff:ffff:ffff,FR
2606:2800:5034::,2606:2800:503f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5040::,2606:2800:5041:ffff:ffff:ffff:ffff:ffff,NL
2606:2800:5042::,2606:2800:504f:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:5050::,2606:2800:5051:ffff:ffff:ffff:ffff:ffff,AT
-2606:2800:5052::,2606:2800:505f:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:5060::,2606:2800:5061:ffff:ffff:ffff:ffff:ffff,SE
-2606:2800:5062::,2606:2800:506f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5050::,2606:2800:5054:ffff:ffff:ffff:ffff:ffff,AT
+2606:2800:5055::,2606:2800:505f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5060::,2606:2800:5064:ffff:ffff:ffff:ffff:ffff,SE
+2606:2800:5065::,2606:2800:506f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5070::,2606:2800:5071:ffff:ffff:ffff:ffff:ffff,DE
2606:2800:5072::,2606:2800:507f:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:5080::,2606:2800:5080:ffff:ffff:ffff:ffff:ffff,IT
-2606:2800:5081::,2606:2800:508f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5080::,2606:2800:5081:ffff:ffff:ffff:ffff:ffff,IT
+2606:2800:5082::,2606:2800:508f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5090::,2606:2800:5090:ffff:ffff:ffff:ffff:ffff,PL
-2606:2800:5091::,2606:2800:510f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5091::,2606:2800:509f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:50a0::,2606:2800:50a3:ffff:ffff:ffff:ffff:ffff,GB
+2606:2800:50a4::,2606:2800:50a7:ffff:ffff:ffff:ffff:ffff,DE
+2606:2800:50a8::,2606:2800:50ab:ffff:ffff:ffff:ffff:ffff,NL
+2606:2800:50ac::,2606:2800:50ff:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:5100::,2606:2800:5100:ffff:ffff:ffff:ffff:ffff,OM
+2606:2800:5101::,2606:2800:5101:ffff:ffff:ffff:ffff:ffff,AE
+2606:2800:5102::,2606:2800:510f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:5110::,2606:2800:5110:ffff:ffff:ffff:ffff:ffff,ZA
2606:2800:5111::,2606:2800:5fff:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:6000::,2606:2800:6001:ffff:ffff:ffff:ffff:ffff,SG
-2606:2800:6002::,2606:2800:600f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6000::,2606:2800:6005:ffff:ffff:ffff:ffff:ffff,SG
+2606:2800:6006::,2606:2800:600f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:6010::,2606:2800:6011:ffff:ffff:ffff:ffff:ffff,HK
-2606:2800:6012::,2606:2800:601f:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:6020::,2606:2800:6023:ffff:ffff:ffff:ffff:ffff,JP
-2606:2800:6024::,2606:2800:6027:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:6028::,2606:2800:6029:ffff:ffff:ffff:ffff:ffff,JP
+2606:2800:6012::,2606:2800:601a:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:601b::,2606:2800:601d:ffff:ffff:ffff:ffff:ffff,HK
+2606:2800:601e::,2606:2800:601f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6020::,2606:2800:6029:ffff:ffff:ffff:ffff:ffff,JP
2606:2800:602a::,2606:2800:602a:ffff:ffff:ffff:ffff:ffff,US
2606:2800:602b::,2606:2800:602b:ffff:ffff:ffff:ffff:ffff,JP
2606:2800:602c::,2606:2800:602f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:6030::,2606:2800:6031:ffff:ffff:ffff:ffff:ffff,AU
2606:2800:6032::,2606:2800:6032:ffff:ffff:ffff:ffff:ffff,US
-2606:2800:6033::,2606:2800:6033:ffff:ffff:ffff:ffff:ffff,AU
-2606:2800:6034::,2606:2800:603f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6033::,2606:2800:6036:ffff:ffff:ffff:ffff:ffff,AU
+2606:2800:6037::,2606:2800:603f:ffff:ffff:ffff:ffff:ffff,US
2606:2800:6040::,2606:2800:6041:ffff:ffff:ffff:ffff:ffff,HK
-2606:2800:6042::,2606:2800:60ef:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6042::,2606:2800:604f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6050::,2606:2800:6050:ffff:ffff:ffff:ffff:ffff,TW
+2606:2800:6051::,2606:2800:60ef:ffff:ffff:ffff:ffff:ffff,US
2606:2800:60f0::,2606:2800:60f3:ffff:ffff:ffff:ffff:ffff,IN
-2606:2800:60f4::,2606:2800:7000:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:60f4::,2606:2800:60f6:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:60f7::,2606:2800:60f7:ffff:ffff:ffff:ffff:ffff,IN
+2606:2800:60f8::,2606:2800:60ff:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:6100::,2606:2800:6100:ffff:ffff:ffff:ffff:ffff,TH
+2606:2800:6101::,2606:2800:7000:ffff:ffff:ffff:ffff:ffff,US
2606:2800:7001::,2606:2800:7001:ffff:ffff:ffff:ffff:ffff,CO
-2606:2800:7002::,2606:2800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:7002::,2606:2800:700b:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:700c::,2606:2800:700c:ffff:ffff:ffff:ffff:ffff,CL
+2606:2800:700d::,2606:2800:700f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:7010::,2606:2800:7013:ffff:ffff:ffff:ffff:ffff,BR
+2606:2800:7014::,2606:2800:702f:ffff:ffff:ffff:ffff:ffff,US
+2606:2800:7030::,2606:2800:7032:ffff:ffff:ffff:ffff:ffff,BR
+2606:2800:7033::,2606:2800:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2880::,2606:2880:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2900::,2606:2900:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2980::,2606:2980:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15703,8 +15655,10 @@
2607:f0d8::,2607:f0dc:4fff:ffff:ffff:ffff:ffff:ffff,US
2607:f0dc:5000::,2607:f0dc:5000:ffff:ffff:ffff:ffff:ffff,TW
2607:f0dc:5001::,2607:f0dc:5001:ffff:ffff:ffff:ffff:ffff,US
-2607:f0dc:5002::,2607:f0dc:50ff:ffff:ffff:ffff:ffff:ffff,TW
-2607:f0dc:5100::,2607:f0e0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:f0dc:5002::,2607:f0dc:5101:ffff:ffff:ffff:ffff:ffff,TW
+2607:f0dc:5102::,2607:f0dc:5102:ffff:ffff:ffff:ffff:ffff,US
+2607:f0dc:5103::,2607:f0dc:53ff:ffff:ffff:ffff:ffff:ffff,TW
+2607:f0dc:5400::,2607:f0e0:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f0e8::,2607:f0e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f0f8::,2607:f0f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:f100::,2607:f100:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -16050,7 +16004,6 @@
2607:fc48::,2607:fc48:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fc50::,2607:fc50:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fc58::,2607:fc58:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fc60::,2607:fc60:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fc68::,2607:fc68:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fc70::,2607:fc70:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:fc78::,2607:fc78:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -16281,23 +16234,7 @@
2620:0:3c0::,2620::3c0:ffff:ffff:ffff:ffff:ffff,US
2620:0:3e0::,2620::3e0:ffff:ffff:ffff:ffff:ffff,US
2620:0:3f0::,2620::3f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:400::,2620::57f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:600::,2620::600:ffff:ffff:ffff:ffff:ffff,US
-2620:0:610::,2620::61f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:630::,2620::630:ffff:ffff:ffff:ffff:ffff,US
-2620:0:640::,2620::640:ffff:ffff:ffff:ffff:ffff,US
-2620:0:650::,2620::650:ffff:ffff:ffff:ffff:ffff,US
-2620:0:660::,2620::660:ffff:ffff:ffff:ffff:ffff,US
-2620:0:670::,2620::671:ffff:ffff:ffff:ffff:ffff,US
-2620:0:680::,2620::680:ffff:ffff:ffff:ffff:ffff,US
-2620:0:690::,2620::6a0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6b0::,2620::6b0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6c0::,2620::6c7:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6d0::,2620::6d0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6e0::,2620::6e0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:6f0::,2620::6f0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:700::,2620::77f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:800::,2620::802:ffff:ffff:ffff:ffff:ffff,US
+2620:0:400::,2620::802:ffff:ffff:ffff:ffff:ffff,US
2620:0:810::,2620::810:ffff:ffff:ffff:ffff:ffff,CA
2620:0:840::,2620::840:ffff:ffff:ffff:ffff:ffff,US
2620:0:850::,2620::850:ffff:ffff:ffff:ffff:ffff,US
@@ -16433,16 +16370,7 @@
2620:0:ccb::,2620::ccd:ffff:ffff:ffff:ffff:ffff,US
2620:0:cce::,2620::cce:ffff:ffff:ffff:ffff:ffff,CN
2620:0:ccf::,2620::ccf:ffff:ffff:ffff:ffff:ffff,AU
-2620:0:cd0::,2620::e3f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e50::,2620::e60:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e80::,2620::e80:ffff:ffff:ffff:ffff:ffff,US
-2620:0:e90::,2620::e90:ffff:ffff:ffff:ffff:ffff,US
-2620:0:ea0::,2620::eb0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:ed0::,2620::ed0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:ee0::,2620::ee0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:ef0::,2620::ef0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:f00::,2620::f7f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1000::,2620::100b:ffff:ffff:ffff:ffff:ffff,US
+2620:0:cd0::,2620::100b:ffff:ffff:ffff:ffff:ffff,US
2620:0:100c::,2620::100c:ffff:ffff:ffff:ffff:ffff,CA
2620:0:100d::,2620::1010:ffff:ffff:ffff:ffff:ffff,US
2620:0:1011::,2620::1011:ffff:ffff:ffff:ffff:ffff,AR
@@ -16450,8 +16378,8 @@
2620:0:1017::,2620::1017:ffff:ffff:ffff:ffff:ffff,CO
2620:0:1018::,2620::1023:ffff:ffff:ffff:ffff:ffff,US
2620:0:1024::,2620::1027:ffff:ffff:ffff:ffff:ffff,BR
-2620:0:1028::,2620::1033:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1034::,2620::1035:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:1028::,2620::1034:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1035::,2620::1035:ffff:ffff:ffff:ffff:ffff,CA
2620:0:1036::,2620::103f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1040::,2620::1041:ffff:ffff:ffff:ffff:ffff,IE
2620:0:1042::,2620::1042:ffff:ffff:ffff:ffff:ffff,GB
@@ -16469,10 +16397,10 @@
2620:0:1053::,2620::1053:ffff:ffff:ffff:ffff:ffff,FR
2620:0:1054::,2620::1054:ffff:ffff:ffff:ffff:ffff,US
2620:0:1055::,2620::1055:ffff:ffff:ffff:ffff:ffff,BE
-2620:0:1056::,2620::1058:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1056::,2620::1057:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1058::,2620::1058:ffff:ffff:ffff:ffff:ffff,CH
2620:0:1059::,2620::1059:ffff:ffff:ffff:ffff:ffff,DK
-2620:0:105a::,2620::105b:ffff:ffff:ffff:ffff:ffff,US
-2620:0:105c::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
+2620:0:105a::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
2620:0:1060::,2620::1060:ffff:ffff:ffff:ffff:ffff,FI
2620:0:1061::,2620::1061:ffff:ffff:ffff:ffff:ffff,CH
2620:0:1062::,2620::1065:ffff:ffff:ffff:ffff:ffff,HU
@@ -16504,30 +16432,12 @@
2620:0:10cd::,2620::10df:ffff:ffff:ffff:ffff:ffff,CN
2620:0:10e0::,2620::10e7:ffff:ffff:ffff:ffff:ffff,US
2620:0:10e8::,2620::10e8:ffff:ffff:ffff:ffff:ffff,AR
-2620:0:10e9::,2620::10e9:ffff:ffff:ffff:ffff:ffff,US
-2620:0:10ea::,2620::10eb:ffff:ffff:ffff:ffff:ffff,AR
-2620:0:10ec::,2620::10ff:ffff:ffff:ffff:ffff:ffff,US
+2620:0:10e9::,2620::10ff:ffff:ffff:ffff:ffff:ffff,US
2620:0:1400::,2620::143f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1500::,2620::157f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1600::,2620::167f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1700::,2620::170f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1800::,2620::181f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a00::,2620::1a00:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a10::,2620::1a10:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a20::,2620::1a20:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a30::,2620::1a30:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a40::,2620::1a40:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a50::,2620::1a50:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a70::,2620::1a70:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1a80::,2620::1a80:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1aa0::,2620::1aa0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1ab0::,2620::1ab0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1ac0::,2620::1ac0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1ad0::,2620::1ad7:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1ae0::,2620::1ae0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1af0::,2620::1af0:ffff:ffff:ffff:ffff:ffff,CA
-2620:0:1b00::,2620::1b07:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1c00::,2620::1cff:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1800::,2620::1cff:ffff:ffff:ffff:ffff:ffff,US
2620:0:2000::,2620::24ff:ffff:ffff:ffff:ffff:ffff,US
2620:0:2800::,2620::290f:ffff:ffff:ffff:ffff:ffff,US
2620:0:2a00::,2620::2a1f:ffff:ffff:ffff:ffff:ffff,US
@@ -16539,8 +16449,29 @@
2620:0:2b70::,2620::2b8f:ffff:ffff:ffff:ffff:ffff,US
2620:0:2bc0::,2620::2bc3:ffff:ffff:ffff:ffff:ffff,US
2620:0:2be0::,2620::2be0:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2c00::,2620::2fff:ffff:ffff:ffff:ffff:ffff,US
-2620:0:5000::,2620::53ff:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2d00::,2620::2d7f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e00::,2620::2e00:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e10::,2620::2e10:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e30::,2620::2e30:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e40::,2620::2e40:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2e50::,2620::2e80:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2ea0::,2620::2eb0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2ed0::,2620::2ed0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2ee0::,2620::2ee0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:2f00::,2620::2f7f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5000::,2620::5000:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5010::,2620::5010:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5030::,2620::5030:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5040::,2620::5040:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5050::,2620::5050:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5060::,2620::5060:ffff:ffff:ffff:ffff:ffff,CA
+2620:0:5070::,2620::5070:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5080::,2620::50c0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:50d0::,2620::50d1:ffff:ffff:ffff:ffff:ffff,US
+2620:0:50e0::,2620::50e0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:50f0::,2620::50f0:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5100::,2620::510f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:5200::,2620::53ff:ffff:ffff:ffff:ffff:ffff,US
2620:0:7f00::,2620::7f00:ffff:ffff:ffff:ffff:ffff,CA
2620:0:aa00::,2620::aa00:ffff:ffff:ffff:ffff:ffff,US
2620:0:d500::,2620::d500:ffff:ffff:ffff:ffff:ffff,US
@@ -16552,7 +16483,7 @@
2620:1:a000::,2620:1:a000:ffff:ffff:ffff:ffff:ffff,US
2620:1:c000::,2620:1:c000:ffff:ffff:ffff:ffff:ffff,US
2620:2::,2620:2::ffff:ffff:ffff:ffff:ffff,US
-2620:2:2000::,2620:2:23ff:ffff:ffff:ffff:ffff:ffff,US
+2620:2:2000::,2620:2:2000:ffff:ffff:ffff:ffff:ffff,US
2620:2:4000::,2620:2:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:2:6000::,2620:2:600f:ffff:ffff:ffff:ffff:ffff,US
2620:2:8000::,2620:2:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -16568,7 +16499,7 @@
2620:3:c000::,2620:3:c000:ffff:ffff:ffff:ffff:ffff,US
2620:4::,2620:4::ffff:ffff:ffff:ffff:ffff,US
2620:4:2000::,2620:4:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:4:4000::,2620:4:43ff:ffff:ffff:ffff:ffff:ffff,US
+2620:4:4000::,2620:4:4000:ffff:ffff:ffff:ffff:ffff,US
2620:4:6000::,2620:4:6000:ffff:ffff:ffff:ffff:ffff,US
2620:4:8000::,2620:4:8000:ffff:ffff:ffff:ffff:ffff,US
2620:4:a000::,2620:4:a000:ffff:ffff:ffff:ffff:ffff,US
@@ -16576,7 +16507,7 @@
2620:4:e000::,2620:4:e000:ffff:ffff:ffff:ffff:ffff,US
2620:5::,2620:5::ffff:ffff:ffff:ffff:ffff,US
2620:5:4000::,2620:5:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:5:8000::,2620:5:83ff:ffff:ffff:ffff:ffff:ffff,US
+2620:5:8000::,2620:5:8000:ffff:ffff:ffff:ffff:ffff,US
2620:5:a000::,2620:5:a000:ffff:ffff:ffff:ffff:ffff,US
2620:5:c000::,2620:5:c000:ffff:ffff:ffff:ffff:ffff,US
2620:5:e000::,2620:5:e000:ffff:ffff:ffff:ffff:ffff,US
@@ -16747,7 +16678,7 @@
2620:1c:c000::,2620:1c:c000:ffff:ffff:ffff:ffff:ffff,US
2620:1c:e000::,2620:1c:e000:ffff:ffff:ffff:ffff:ffff,US
2620:1d::,2620:1d:f:ffff:ffff:ffff:ffff:ffff,US
-2620:1d:2000::,2620:1d:23ff:ffff:ffff:ffff:ffff:ffff,US
+2620:1d:2000::,2620:1d:2000:ffff:ffff:ffff:ffff:ffff,US
2620:1d:4000::,2620:1d:4000:ffff:ffff:ffff:ffff:ffff,US
2620:1d:6000::,2620:1d:6000:ffff:ffff:ffff:ffff:ffff,US
2620:1d:8000::,2620:1d:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -16833,7 +16764,6 @@
2620:29:4000::,2620:29:4000:ffff:ffff:ffff:ffff:ffff,US
2620:29:a000::,2620:29:a000:ffff:ffff:ffff:ffff:ffff,US
2620:29:c000::,2620:29:c00f:ffff:ffff:ffff:ffff:ffff,US
-2620:2a::,2620:2a::ffff:ffff:ffff:ffff:ffff,US
2620:2a:2000::,2620:2a:2000:ffff:ffff:ffff:ffff:ffff,US
2620:2a:4000::,2620:2a:400f:ffff:ffff:ffff:ffff:ffff,US
2620:2a:8000::,2620:2a:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -16860,7 +16790,6 @@
2620:2e:40c0::,2620:2e:40cf:ffff:ffff:ffff:ffff:ffff,US
2620:2e:c040::,2620:2e:c040:ffff:ffff:ffff:ffff:ffff,US
2620:2f::,2620:2f::ffff:ffff:ffff:ffff:ffff,CA
-2620:2f:2000::,2620:2f:2000:ffff:ffff:ffff:ffff:ffff,US
2620:2f:4000::,2620:2f:4000:ffff:ffff:ffff:ffff:ffff,US
2620:2f:6000::,2620:2f:6000:ffff:ffff:ffff:ffff:ffff,US
2620:2f:8000::,2620:2f:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -16903,7 +16832,7 @@
2620:34:c000::,2620:34:c000:ffff:ffff:ffff:ffff:ffff,US
2620:34:e000::,2620:34:e000:ffff:ffff:ffff:ffff:ffff,US
2620:35:4000::,2620:35:400f:ffff:ffff:ffff:ffff:ffff,CA
-2620:35:8000::,2620:35:83ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:35:8000::,2620:35:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:35:a000::,2620:35:a000:ffff:ffff:ffff:ffff:ffff,US
2620:35:c000::,2620:35:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:36::,2620:36::ffff:ffff:ffff:ffff:ffff,US
@@ -16915,7 +16844,7 @@
2620:36:e000::,2620:36:e00f:ffff:ffff:ffff:ffff:ffff,US
2620:37::,2620:37::ffff:ffff:ffff:ffff:ffff,US
2620:37:2000::,2620:37:2000:ffff:ffff:ffff:ffff:ffff,US
-2620:37:4000::,2620:37:43ff:ffff:ffff:ffff:ffff:ffff,US
+2620:37:4000::,2620:37:400f:ffff:ffff:ffff:ffff:ffff,US
2620:37:8000::,2620:37:8000:ffff:ffff:ffff:ffff:ffff,US
2620:37:a000::,2620:37:a000:ffff:ffff:ffff:ffff:ffff,US
2620:37:c000::,2620:37:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -16927,7 +16856,7 @@
2620:38:a000::,2620:38:a000:ffff:ffff:ffff:ffff:ffff,US
2620:38:c000::,2620:38:c000:ffff:ffff:ffff:ffff:ffff,US
2620:38:e000::,2620:38:e000:ffff:ffff:ffff:ffff:ffff,US
-2620:39::,2620:39:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:39::,2620:39:f:ffff:ffff:ffff:ffff:ffff,US
2620:39:2000::,2620:39:2000:ffff:ffff:ffff:ffff:ffff,US
2620:39:4000::,2620:39:4000:ffff:ffff:ffff:ffff:ffff,US
2620:39:6000::,2620:39:6000:ffff:ffff:ffff:ffff:ffff,US
@@ -16941,7 +16870,7 @@
2620:3a:a000::,2620:3a:a000:ffff:ffff:ffff:ffff:ffff,US
2620:3a:c000::,2620:3a:c3ff:ffff:ffff:ffff:ffff:ffff,US
2620:3a:e000::,2620:3a:e000:ffff:ffff:ffff:ffff:ffff,US
-2620:3b::,2620:3b:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:3b::,2620:3b::ffff:ffff:ffff:ffff:ffff,US
2620:3b:2000::,2620:3b:2000:ffff:ffff:ffff:ffff:ffff,US
2620:3b:4000::,2620:3b:4000:ffff:ffff:ffff:ffff:ffff,US
2620:3b:6000::,2620:3b:6000:ffff:ffff:ffff:ffff:ffff,US
@@ -17025,7 +16954,8 @@
2620:46:a000::,2620:46:a000:ffff:ffff:ffff:ffff:ffff,US
2620:46:c000::,2620:46:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:47::,2620:47::ffff:ffff:ffff:ffff:ffff,US
-2620:47:2000::,2620:47:2000:ffff:ffff:ffff:ffff:ffff,US
+2620:47:2000::,2620:47:2000:7ff:ffff:ffff:ffff:ffff,AU
+2620:47:2000:800::,2620:47:2000:ffff:ffff:ffff:ffff:ffff,US
2620:47:4000::,2620:47:4000:ffff:ffff:ffff:ffff:ffff,US
2620:47:6000::,2620:47:6000:ffff:ffff:ffff:ffff:ffff,US
2620:47:8000::,2620:47:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17143,7 +17073,7 @@
2620:58:4c00::,2620:58:4c00:ffff:ffff:ffff:ffff:ffff,US
2620:58:8800::,2620:58:8800:ffff:ffff:ffff:ffff:ffff,US
2620:58:c400::,2620:58:c400:ffff:ffff:ffff:ffff:ffff,CA
-2620:59::,2620:59:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:59::,2620:59::ffff:ffff:ffff:ffff:ffff,US
2620:59:2000::,2620:59:2000:ffff:ffff:ffff:ffff:ffff,US
2620:59:4000::,2620:59:4000:ffff:ffff:ffff:ffff:ffff,US
2620:59:6000::,2620:59:6000:ffff:ffff:ffff:ffff:ffff,JM
@@ -17207,7 +17137,6 @@
2620:61:a000::,2620:61:a000:ffff:ffff:ffff:ffff:ffff,US
2620:61:c000::,2620:61:c000:ffff:ffff:ffff:ffff:ffff,US
2620:61:e000::,2620:61:e000:ffff:ffff:ffff:ffff:ffff,GD
-2620:62::,2620:62::ffff:ffff:ffff:ffff:ffff,US
2620:62:2000::,2620:62:2000:ffff:ffff:ffff:ffff:ffff,US
2620:62:4000::,2620:62:400f:ffff:ffff:ffff:ffff:ffff,CA
2620:62:8000::,2620:62:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17215,10 +17144,14 @@
2620:62:c000::,2620:62:c000:ffff:ffff:ffff:ffff:ffff,US
2620:62:e000::,2620:62:e000:ffff:ffff:ffff:ffff:ffff,US
2620:63::,2620:63::ffff:ffff:ffff:ffff:ffff,US
+2620:63:2000::,2620:63:2000:ffff:ffff:ffff:ffff:ffff,US
2620:63:4000::,2620:63:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:63:6000::,2620:63:6000:ffff:ffff:ffff:ffff:ffff,US
2620:63:8000::,2620:63:8000:ffff:ffff:ffff:ffff:ffff,US
2620:63:c000::,2620:63:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:63:e000::,2620:63:e000:ffff:ffff:ffff:ffff:ffff,US
2620:64::,2620:64::ffff:ffff:ffff:ffff:ffff,US
+2620:64:2000::,2620:64:2000:ffff:ffff:ffff:ffff:ffff,US
2620:64:4000::,2620:64:4000:ffff:ffff:ffff:ffff:ffff,US
2620:64:c000::,2620:64:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:65::,2620:65:ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17240,7 +17173,7 @@
2620:69:4000::,2620:69:4000:ffff:ffff:ffff:ffff:ffff,US
2620:69:8000::,2620:69:8000:ffff:ffff:ffff:ffff:ffff,US
2620:69:c000::,2620:69:c000:ffff:ffff:ffff:ffff:ffff,CA
-2620:6a::,2620:6a:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:6a::,2620:6a::ffff:ffff:ffff:ffff:ffff,US
2620:6a:4000::,2620:6a:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:6a:8000::,2620:6a:8000:ffff:ffff:ffff:ffff:ffff,US
2620:6a:c000::,2620:6a:c000:ffff:ffff:ffff:ffff:ffff,CA
@@ -17320,7 +17253,7 @@
2620:78:c000::,2620:78:c000:ffff:ffff:ffff:ffff:ffff,CA
2620:79::,2620:79:3ff:ffff:ffff:ffff:ffff:ffff,US
2620:79:8000::,2620:79:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:79:c000::,2620:79:c3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:79:c000::,2620:79:c000:ffff:ffff:ffff:ffff:ffff,US
2620:7a::,2620:7a::ffff:ffff:ffff:ffff:ffff,US
2620:7a:4000::,2620:7a:4000:ffff:ffff:ffff:ffff:ffff,US
2620:7a:8000::,2620:7a:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17340,9 +17273,9 @@
2620:7d:8000::,2620:7d:8000:ffff:ffff:ffff:ffff:ffff,US
2620:7d:c000::,2620:7d:c000:ffff:ffff:ffff:ffff:ffff,US
2620:7e::,2620:7e:f:ffff:ffff:ffff:ffff:ffff,US
-2620:7e:3000::,2620:7e:33ff:ffff:ffff:ffff:ffff:ffff,US
+2620:7e:30e0::,2620:7e:30e0:ffff:ffff:ffff:ffff:ffff,US
2620:7e:60c0::,2620:7e:60c0:ffff:ffff:ffff:ffff:ffff,US
-2620:7e:9000::,2620:7e:93ff:ffff:ffff:ffff:ffff:ffff,US
+2620:7e:90a0::,2620:7e:90a0:ffff:ffff:ffff:ffff:ffff,US
2620:7e:c080::,2620:7e:c080:ffff:ffff:ffff:ffff:ffff,US
2620:7f:8000::,2620:7f:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:7f:c000::,2620:7f:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17382,7 +17315,7 @@
2620:88:c000::,2620:88:c000:ffff:ffff:ffff:ffff:ffff,US
2620:89::,2620:89::ffff:ffff:ffff:ffff:ffff,US
2620:89:8000::,2620:89:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:89:c000::,2620:89:c3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:89:c000::,2620:89:c000:ffff:ffff:ffff:ffff:ffff,US
2620:8a::,2620:8a::ffff:ffff:ffff:ffff:ffff,US
2620:8a:4000::,2620:8a:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:8a:8000::,2620:8a:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17390,12 +17323,12 @@
2620:8b::,2620:8b::ffff:ffff:ffff:ffff:ffff,US
2620:8b:4000::,2620:8b:4000:ffff:ffff:ffff:ffff:ffff,US
2620:8b:8000::,2620:8b:8000:ffff:ffff:ffff:ffff:ffff,CA
-2620:8b:c000::,2620:8b:c3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:8b:c000::,2620:8b:c000:ffff:ffff:ffff:ffff:ffff,US
2620:8c:4000::,2620:8c:4000:ffff:ffff:ffff:ffff:ffff,US
2620:8c:8000::,2620:8c:8000:ffff:ffff:ffff:ffff:ffff,US
2620:8d::,2620:8d::ffff:ffff:ffff:ffff:ffff,US
2620:8d:4000::,2620:8d:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:8d:8000::,2620:8d:83ff:ffff:ffff:ffff:ffff:ffff,US
+2620:8d:8000::,2620:8d:8000:ffff:ffff:ffff:ffff:ffff,US
2620:8d:c000::,2620:8d:c000:ffff:ffff:ffff:ffff:ffff,US
2620:8e:4000::,2620:8e:4000:ffff:ffff:ffff:ffff:ffff,US
2620:8e:8000::,2620:8e:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17442,7 +17375,6 @@
2620:99:c000::,2620:99:c000:ffff:ffff:ffff:ffff:ffff,US
2620:9a::,2620:9a::ffff:ffff:ffff:ffff:ffff,CA
2620:9a:8000::,2620:9a:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:9b::,2620:9b::ffff:ffff:ffff:ffff:ffff,US
2620:9b:4000::,2620:9b:4000:ffff:ffff:ffff:ffff:ffff,US
2620:9b:8000::,2620:9b:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:9b:c000::,2620:9b:c00f:ffff:ffff:ffff:ffff:ffff,US
@@ -17477,14 +17409,14 @@
2620:a3:8000::,2620:a3:8000:ffff:ffff:ffff:ffff:ffff,US
2620:a3:a010::,2620:a3:a010:ffff:ffff:ffff:ffff:ffff,US
2620:a3:c020::,2620:a3:c020:ffff:ffff:ffff:ffff:ffff,US
-2620:a3:e000::,2620:a3:e3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:a3:e030::,2620:a3:e030:ffff:ffff:ffff:ffff:ffff,US
2620:a4:40::,2620:a4:40:ffff:ffff:ffff:ffff:ffff,US
2620:a4:2050::,2620:a4:205f:ffff:ffff:ffff:ffff:ffff,US
2620:a4:4060::,2620:a4:4060:ffff:ffff:ffff:ffff:ffff,US
2620:a4:6070::,2620:a4:6070:ffff:ffff:ffff:ffff:ffff,US
2620:a4:8080::,2620:a4:8080:ffff:ffff:ffff:ffff:ffff,US
2620:a5::,2620:a5::ffff:ffff:ffff:ffff:ffff,US
-2620:a5:4000::,2620:a5:43ff:ffff:ffff:ffff:ffff:ffff,US
+2620:a5:4000::,2620:a5:4000:ffff:ffff:ffff:ffff:ffff,US
2620:a5:8000::,2620:a5:8000:ffff:ffff:ffff:ffff:ffff,US
2620:a5:c000::,2620:a5:c000:ffff:ffff:ffff:ffff:ffff,US
2620:a6::,2620:a6::ffff:ffff:ffff:ffff:ffff,US
@@ -17629,13 +17561,13 @@
2620:ca:4000::,2620:ca:4000:ffff:ffff:ffff:ffff:ffff,US
2620:ca:8000::,2620:ca:8000:ffff:ffff:ffff:ffff:ffff,US
2620:ca:c000::,2620:ca:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:cb::,2620:cb:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:cb::,2620:cb:f:ffff:ffff:ffff:ffff:ffff,US
2620:cb:4000::,2620:cb:4000:ffff:ffff:ffff:ffff:ffff,US
2620:cb:8000::,2620:cb:8000:ffff:ffff:ffff:ffff:ffff,US
2620:cb:c000::,2620:cb:c000:ffff:ffff:ffff:ffff:ffff,US
2620:cc::,2620:cc::ffff:ffff:ffff:ffff:ffff,US
2620:cc:4000::,2620:cc:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:cc:8000::,2620:cc:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:cc:8000::,2620:cc:83ff:ffff:ffff:ffff:ffff:ffff,US
2620:cc:c000::,2620:cc:c000:ffff:ffff:ffff:ffff:ffff,US
2620:cd::,2620:cd::ffff:ffff:ffff:ffff:ffff,US
2620:cd:4000::,2620:cd:4000:ffff:ffff:ffff:ffff:ffff,US
@@ -17662,7 +17594,7 @@
2620:d3:4000::,2620:d3:4000:ffff:ffff:ffff:ffff:ffff,US
2620:d3:8000::,2620:d3:8000:ffff:ffff:ffff:ffff:ffff,US
2620:d3:c000::,2620:d3:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:d4::,2620:d4:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:d4::,2620:d4::ffff:ffff:ffff:ffff:ffff,US
2620:d4:4000::,2620:d4:4000:ffff:ffff:ffff:ffff:ffff,US
2620:d4:8000::,2620:d4:8000:ffff:ffff:ffff:ffff:ffff,US
2620:d5::,2620:d5::ffff:ffff:ffff:ffff:ffff,US
@@ -17705,7 +17637,7 @@
2620:de:c000::,2620:de:c000:ffff:ffff:ffff:ffff:ffff,US
2620:df::,2620:df::ffff:ffff:ffff:ffff:ffff,US
2620:df:4000::,2620:df:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:df:8000::,2620:df:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:df:8000::,2620:df:83ff:ffff:ffff:ffff:ffff:ffff,US
2620:df:c000::,2620:df:c000:ffff:ffff:ffff:ffff:ffff,US
2620:e0::,2620:e0::ffff:ffff:ffff:ffff:ffff,US
2620:e0:4000::,2620:e0:4000:ffff:ffff:ffff:ffff:ffff,US
@@ -17735,7 +17667,7 @@
2620:e6:4000::,2620:e6:4000:ffff:ffff:ffff:ffff:ffff,US
2620:e6:8000::,2620:e6:8000:ffff:ffff:ffff:ffff:ffff,US
2620:e6:c000::,2620:e6:c000:ffff:ffff:ffff:ffff:ffff,US
-2620:e7::,2620:e7:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:e7::,2620:e7::ffff:ffff:ffff:ffff:ffff,US
2620:e7:4000::,2620:e7:4000:ffff:ffff:ffff:ffff:ffff,US
2620:e7:8000::,2620:e7:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:e7:c000::,2620:e7:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17782,7 +17714,7 @@
2620:f0:c00b::,2620:f0:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:f1:4000::,2620:f1:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:f1:8000::,2620:f1:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:f1:c000::,2620:f1:c3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:f1:c000::,2620:f1:c000:ffff:ffff:ffff:ffff:ffff,US
2620:f2::,2620:f2::ffff:ffff:ffff:ffff:ffff,CA
2620:f2:4000::,2620:f2:4000:ffff:ffff:ffff:ffff:ffff,US
2620:f2:8000::,2620:f2:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -17822,7 +17754,7 @@
2620:fb::,2620:fb::ffff:ffff:ffff:ffff:ffff,US
2620:fb:4000::,2620:fb:4000:ffff:ffff:ffff:ffff:ffff,US
2620:fb:8000::,2620:fb:8000:ffff:ffff:ffff:ffff:ffff,US
-2620:fc::,2620:fc:3ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:fc::,2620:fc::ffff:ffff:ffff:ffff:ffff,CA
2620:fc:4000::,2620:fc:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:fc:8000::,2620:fc:8000:ffff:ffff:ffff:ffff:ffff,US
2620:fc:c000::,2620:fc:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -17861,14 +17793,14 @@
2620:101:8000::,2620:101:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:101:9000::,2620:101:900f:ffff:ffff:ffff:ffff:ffff,US
2620:101:b000::,2620:101:b07f:ffff:ffff:ffff:ffff:ffff,US
-2620:101:c000::,2620:101:c0ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:101:c000::,2620:101:c3ff:ffff:ffff:ffff:ffff:ffff,CA
2620:101:d000::,2620:101:d007:ffff:ffff:ffff:ffff:ffff,US
2620:101:e000::,2620:101:e00f:ffff:ffff:ffff:ffff:ffff,US
-2620:101:f000::,2620:101:f3ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:101:f000::,2620:101:f001:ffff:ffff:ffff:ffff:ffff,CA
2620:102::,2620:102:f:ffff:ffff:ffff:ffff:ffff,US
2620:102:2000::,2620:102:200f:ffff:ffff:ffff:ffff:ffff,US
2620:102:3000::,2620:102:300f:ffff:ffff:ffff:ffff:ffff,US
-2620:102:4000::,2620:102:403f:ffff:ffff:ffff:ffff:ffff,US
+2620:102:4000::,2620:102:43ff:ffff:ffff:ffff:ffff:ffff,US
2620:102:5000::,2620:102:501f:ffff:ffff:ffff:ffff:ffff,US
2620:102:6000::,2620:102:6003:ffff:ffff:ffff:ffff:ffff,US
2620:102:7000::,2620:102:700f:ffff:ffff:ffff:ffff:ffff,US
@@ -17890,7 +17822,7 @@
2620:103:8000::,2620:103:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:103:9000::,2620:103:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:103:a000::,2620:103:a3ff:ffff:ffff:ffff:ffff:ffff,US
-2620:103:b000::,2620:103:b3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:103:b000::,2620:103:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:103:c000::,2620:103:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:103:d000::,2620:103:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:103:e000::,2620:103:e0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17898,12 +17830,13 @@
2620:104:1000::,2620:104:100f:ffff:ffff:ffff:ffff:ffff,US
2620:104:2000::,2620:104:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:104:3000::,2620:104:300f:ffff:ffff:ffff:ffff:ffff,US
-2620:104:4000::,2620:104:4001:ffff:ffff:ffff:ffff:ffff,GB
-2620:104:4002::,2620:104:4003:ffff:ffff:ffff:ffff:ffff,US
-2620:104:4004::,2620:104:4007:ffff:ffff:ffff:ffff:ffff,GB
-2620:104:4008::,2620:104:400b:ffff:ffff:ffff:ffff:ffff,US
+2620:104:4000::,2620:104:4007:ffff:ffff:ffff:ffff:ffff,GB
+2620:104:4008::,2620:104:4008:ffff:ffff:ffff:ffff:ffff,US
+2620:104:4009::,2620:104:400b:ffff:ffff:ffff:ffff:ffff,GB
2620:104:400c::,2620:104:400c:ffff:ffff:ffff:ffff:ffff,NZ
-2620:104:400d::,2620:104:43ff:ffff:ffff:ffff:ffff:ffff,US
+2620:104:400d::,2620:104:400d:ffff:ffff:ffff:ffff:ffff,GB
+2620:104:400e::,2620:104:400e:ffff:ffff:ffff:ffff:ffff,US
+2620:104:400f::,2620:104:43ff:ffff:ffff:ffff:ffff:ffff,GB
2620:104:5000::,2620:104:500f:ffff:ffff:ffff:ffff:ffff,US
2620:104:6000::,2620:104:600f:ffff:ffff:ffff:ffff:ffff,US
2620:104:8000::,2620:104:80ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17912,7 +17845,7 @@
2620:104:b000::,2620:104:b01f:ffff:ffff:ffff:ffff:ffff,US
2620:104:c000::,2620:104:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:104:d000::,2620:104:d0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:104:e000::,2620:104:e0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:104:e000::,2620:104:e3ff:ffff:ffff:ffff:ffff:ffff,US
2620:104:f000::,2620:104:f00f:ffff:ffff:ffff:ffff:ffff,US
2620:105::,2620:105:f:ffff:ffff:ffff:ffff:ffff,CA
2620:105:2000::,2620:105:20ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17924,7 +17857,7 @@
2620:105:8000::,2620:105:800f:ffff:ffff:ffff:ffff:ffff,US
2620:105:9000::,2620:105:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:105:a000::,2620:105:a00f:ffff:ffff:ffff:ffff:ffff,US
-2620:105:b000::,2620:105:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:105:b000::,2620:105:b3ff:ffff:ffff:ffff:ffff:ffff,US
2620:105:c000::,2620:105:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:105:e000::,2620:105:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:105:f000::,2620:105:f0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17954,7 +17887,8 @@
2620:107:6000::,2620:107:600f:ffff:ffff:ffff:ffff:ffff,US
2620:107:7000::,2620:107:700f:ffff:ffff:ffff:ffff:ffff,US
2620:107:8000::,2620:107:80ff:ffff:ffff:ffff:ffff:ffff,US
-2620:107:9000::,2620:107:90ff:ffff:ffff:ffff:ffff:ffff,US
+2620:107:9000::,2620:107:90bf:ffff:ffff:ffff:ffff:ffff,US
+2620:107:90c0::,2620:107:90ff:ffff:ffff:ffff:ffff:ffff,CN
2620:107:a000::,2620:107:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:107:c000::,2620:107:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:107:d000::,2620:107:d00f:ffff:ffff:ffff:ffff:ffff,US
@@ -18146,7 +18080,7 @@
2620:114:1000::,2620:114:100f:ffff:ffff:ffff:ffff:ffff,US
2620:114:2000::,2620:114:23ff:ffff:ffff:ffff:ffff:ffff,US
2620:114:3000::,2620:114:33ff:ffff:ffff:ffff:ffff:ffff,US
-2620:114:5000::,2620:114:53ff:ffff:ffff:ffff:ffff:ffff,US
+2620:114:5000::,2620:114:50ff:ffff:ffff:ffff:ffff:ffff,US
2620:114:8000::,2620:114:80ff:ffff:ffff:ffff:ffff:ffff,US
2620:114:9000::,2620:114:900f:ffff:ffff:ffff:ffff:ffff,US
2620:114:a000::,2620:114:a00f:ffff:ffff:ffff:ffff:ffff,US
@@ -18155,7 +18089,7 @@
2620:114:d000::,2620:114:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:114:e000::,2620:114:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:114:f000::,2620:114:f00f:ffff:ffff:ffff:ffff:ffff,US
-2620:115::,2620:115:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:115::,2620:115:f:ffff:ffff:ffff:ffff:ffff,US
2620:115:1000::,2620:115:100f:ffff:ffff:ffff:ffff:ffff,US
2620:115:2000::,2620:115:200f:ffff:ffff:ffff:ffff:ffff,US
2620:115:3000::,2620:115:300f:ffff:ffff:ffff:ffff:ffff,US
@@ -18191,7 +18125,7 @@
2620:117:2000::,2620:117:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:3000::,2620:117:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:4000::,2620:117:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:117:5000::,2620:117:50ff:ffff:ffff:ffff:ffff:ffff,US
+2620:117:5000::,2620:117:53ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:6000::,2620:117:60ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:7000::,2620:117:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:117:8000::,2620:117:80ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18223,7 +18157,7 @@
2620:119:2000::,2620:119:200f:ffff:ffff:ffff:ffff:ffff,US
2620:119:3000::,2620:119:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:4000::,2620:119:40ff:ffff:ffff:ffff:ffff:ffff,US
-2620:119:5000::,2620:119:53ff:ffff:ffff:ffff:ffff:ffff,US
+2620:119:5000::,2620:119:50ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:6000::,2620:119:600f:ffff:ffff:ffff:ffff:ffff,US
2620:119:7000::,2620:119:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:119:8000::,2620:119:800f:ffff:ffff:ffff:ffff:ffff,US
@@ -18243,12 +18177,12 @@
2620:11a:9000::,2620:11a:900f:ffff:ffff:ffff:ffff:ffff,US
2620:11a:a000::,2620:11a:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11a:b000::,2620:11a:b00f:ffff:ffff:ffff:ffff:ffff,US
-2620:11a:c000::,2620:11a:c3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11a:c000::,2620:11a:c0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11a:e000::,2620:11a:e00f:ffff:ffff:ffff:ffff:ffff,US
2620:11a:f000::,2620:11b:ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:1000::,2620:11b:10ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:2000::,2620:11b:20ff:ffff:ffff:ffff:ffff:ffff,US
-2620:11b:3000::,2620:11b:33ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11b:3000::,2620:11b:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:4000::,2620:11b:40ff:ffff:ffff:ffff:ffff:ffff,US
2620:11b:5000::,2620:11b:500f:ffff:ffff:ffff:ffff:ffff,US
2620:11b:6000::,2620:11b:600f:ffff:ffff:ffff:ffff:ffff,US
@@ -18313,7 +18247,7 @@
2620:11f:1000::,2620:11f:100f:ffff:ffff:ffff:ffff:ffff,US
2620:11f:2000::,2620:11f:200f:ffff:ffff:ffff:ffff:ffff,US
2620:11f:3000::,2620:11f:30ff:ffff:ffff:ffff:ffff:ffff,US
-2620:11f:4000::,2620:11f:43ff:ffff:ffff:ffff:ffff:ffff,US
+2620:11f:4000::,2620:11f:40ff:ffff:ffff:ffff:ffff:ffff,US
2620:11f:5000::,2620:11f:53ff:ffff:ffff:ffff:ffff:ffff,US
2620:11f:6000::,2620:11f:60ff:ffff:ffff:ffff:ffff:ffff,US
2620:11f:7000::,2620:11f:700f:ffff:ffff:ffff:ffff:ffff,US
@@ -18345,7 +18279,7 @@
2620:120:d000::,2620:120:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:120:e000::,2620:120:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:120:f000::,2620:120:f0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:121::,2620:121:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:121::,2620:121:f:ffff:ffff:ffff:ffff:ffff,US
2620:121:1000::,2620:121:100f:ffff:ffff:ffff:ffff:ffff,US
2620:121:2000::,2620:121:200f:ffff:ffff:ffff:ffff:ffff,US
2620:121:3000::,2620:121:30ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18361,7 +18295,7 @@
2620:121:d000::,2620:121:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:121:e000::,2620:121:e00f:ffff:ffff:ffff:ffff:ffff,US
2620:121:f000::,2620:121:f00f:ffff:ffff:ffff:ffff:ffff,US
-2620:122::,2620:122:3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:122::,2620:122:f:ffff:ffff:ffff:ffff:ffff,US
2620:122:1000::,2620:122:10ff:ffff:ffff:ffff:ffff:ffff,US
2620:122:2000::,2620:122:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:122:3000::,2620:122:30ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18380,7 +18314,7 @@
2620:123:1000::,2620:123:10ff:ffff:ffff:ffff:ffff:ffff,US
2620:123:2000::,2620:123:200f:ffff:ffff:ffff:ffff:ffff,US
2620:123:3000::,2620:123:30ff:ffff:ffff:ffff:ffff:ffff,US
-2620:123:4000::,2620:123:40ff:ffff:ffff:ffff:ffff:ffff,US
+2620:123:4000::,2620:123:43ff:ffff:ffff:ffff:ffff:ffff,US
2620:123:5000::,2620:123:53ff:ffff:ffff:ffff:ffff:ffff,US
2620:123:6000::,2620:123:600f:ffff:ffff:ffff:ffff:ffff,CA
2620:123:7000::,2620:123:700f:ffff:ffff:ffff:ffff:ffff,CA
@@ -18389,7 +18323,7 @@
2620:123:a000::,2620:123:a00f:ffff:ffff:ffff:ffff:ffff,US
2620:123:b000::,2620:123:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:123:c000::,2620:123:c0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:123:d000::,2620:123:d3ff:ffff:ffff:ffff:ffff:ffff,US
+2620:123:d000::,2620:123:d0ff:ffff:ffff:ffff:ffff:ffff,US
2620:123:e000::,2620:123:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:123:f000::,2620:123:f00f:ffff:ffff:ffff:ffff:ffff,US
2620:124::,2620:124:f:ffff:ffff:ffff:ffff:ffff,US
@@ -18397,7 +18331,7 @@
2620:124:2000::,2620:124:200f:ffff:ffff:ffff:ffff:ffff,US
2620:124:3000::,2620:124:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:124:4000::,2620:124:400f:ffff:ffff:ffff:ffff:ffff,US
-2620:124:5000::,2620:124:53ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:124:5000::,2620:124:50ff:ffff:ffff:ffff:ffff:ffff,CA
2620:124:6000::,2620:124:60ff:ffff:ffff:ffff:ffff:ffff,US
2620:124:7000::,2620:124:700f:ffff:ffff:ffff:ffff:ffff,US
2620:124:8000::,2620:124:800f:ffff:ffff:ffff:ffff:ffff,US
@@ -18601,7 +18535,7 @@
2620:131:2000::,2620:131:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:131:3000::,2620:131:300f:ffff:ffff:ffff:ffff:ffff,US
2620:131:4000::,2620:131:40ff:ffff:ffff:ffff:ffff:ffff,CA
-2620:131:5000::,2620:131:50ff:ffff:ffff:ffff:ffff:ffff,US
+2620:131:5000::,2620:131:53ff:ffff:ffff:ffff:ffff:ffff,US
2620:131:6000::,2620:131:60ff:ffff:ffff:ffff:ffff:ffff,US
2620:131:7000::,2620:131:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:131:8000::,2620:131:800f:ffff:ffff:ffff:ffff:ffff,US
@@ -18666,7 +18600,7 @@
2620:135:4000::,2620:135:400f:ffff:ffff:ffff:ffff:ffff,CA
2620:135:5000::,2620:135:500f:ffff:ffff:ffff:ffff:ffff,US
2620:135:6000::,2620:135:60ff:ffff:ffff:ffff:ffff:ffff,US
-2620:135:7000::,2620:135:73ff:ffff:ffff:ffff:ffff:ffff,US
+2620:135:7000::,2620:135:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:135:8000::,2620:135:800f:ffff:ffff:ffff:ffff:ffff,US
2620:135:9000::,2620:135:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:135:a000::,2620:135:a0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18674,7 +18608,7 @@
2620:135:c000::,2620:135:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:135:d000::,2620:135:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:135:e000::,2620:135:e0ff:ffff:ffff:ffff:ffff:ffff,US
-2620:135:f000::,2620:135:f3ff:ffff:ffff:ffff:ffff:ffff,CA
+2620:135:f000::,2620:135:f00f:ffff:ffff:ffff:ffff:ffff,CA
2620:136::,2620:136:ff:ffff:ffff:ffff:ffff:ffff,US
2620:136:1000::,2620:136:100f:ffff:ffff:ffff:ffff:ffff,US
2620:136:2000::,2620:136:20ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18788,6 +18722,12 @@
2620:13c:f000::,2620:13c:f0ff:ffff:ffff:ffff:ffff:ffff,US
2620:13d::,2620:13d:ff:ffff:ffff:ffff:ffff:ffff,US
2620:13d:1000::,2620:13d:10ff:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:2000::,2620:13d:200f:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:3000::,2620:13d:300f:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:4000::,2620:13d:400f:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:5000::,2620:13d:500f:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:6000::,2620:13d:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:13d:7000::,2620:13d:70ff:ffff:ffff:ffff:ffff:ffff,US
2620:140::,2620:140:3ff:ffff:ffff:ffff:ffff:ffff,US
2620:141::,2620:141:fff:ffff:ffff:ffff:ffff:ffff,US
2620:143::,2620:143:7ff:ffff:ffff:ffff:ffff:ffff,US
@@ -18974,7 +18914,9 @@
2620:1f2::,2620:1f4:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1f5::,2620:1f5:fff:ffff:ffff:ffff:ffff:ffff,CA
2620:1f6::,2620:1f6:fff:ffff:ffff:ffff:ffff:ffff,US
-2620:1f7::,2620:1f7:37ff:ffff:ffff:ffff:ffff:ffff,US
+2620:1f7::,2620:1f7:7ff:ffff:ffff:ffff:ffff:ffff,US
+2620:1f7:800::,2620:1f7:bff:ffff:ffff:ffff:ffff:ffff,CA
+2620:1f7:c00::,2620:1f7:37ff:ffff:ffff:ffff:ffff:ffff,US
2620:1f7:3800::,2620:1f7:38ff:ffff:ffff:ffff:ffff:ffff,MY
2620:1f7:3900::,2620:1f9:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1fa::,2620:1fb:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -19166,7 +19108,9 @@
2800:ca0::,2800:ca0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:cb0::,2800:cb0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:cc0::,2800:cc0:ffff:ffff:ffff:ffff:ffff:ffff,PE
-2800:cd0::,2800:cd0:ffff:ffff:ffff:ffff:ffff:ffff,BO
+2800:cd0::,2800:cd0:b7ff:ffff:ffff:ffff:ffff:ffff,BO
+2800:cd0:b800::,2800:cd0:bbff:ffff:ffff:ffff:ffff:ffff,PF
+2800:cd0:bc00::,2800:cd0:ffff:ffff:ffff:ffff:ffff:ffff,BO
2800:ce0::,2800:ce0:ffff:ffff:ffff:ffff:ffff:ffff,PA
2800:cf0::,2800:cf0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2800:d00::,2800:d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19288,6 +19232,7 @@
2801:11:f000::,2801:11:f000:ffff:ffff:ffff:ffff:ffff,AR
2801:12::,2801:12::ffff:ffff:ffff:ffff:ffff,PY
2801:12:100::,2801:12:10f:ffff:ffff:ffff:ffff:ffff,CO
+2801:12:800::,2801:12:800:ffff:ffff:ffff:ffff:ffff,CL
2801:12:1000::,2801:12:1000:ffff:ffff:ffff:ffff:ffff,BO
2801:12:2000::,2801:12:2000:ffff:ffff:ffff:ffff:ffff,HN
2801:12:3000::,2801:12:3000:ffff:ffff:ffff:ffff:ffff,CL
@@ -19522,7 +19467,6 @@
2801:80:500::,2801:80:500:ffff:ffff:ffff:ffff:ffff,BR
2801:80:510::,2801:80:510:ffff:ffff:ffff:ffff:ffff,BR
2801:80:520::,2801:80:520:ffff:ffff:ffff:ffff:ffff,BR
-2801:80:530::,2801:80:530:ffff:ffff:ffff:ffff:ffff,BR
2801:80:540::,2801:80:540:ffff:ffff:ffff:ffff:ffff,BR
2801:80:550::,2801:80:550:ffff:ffff:ffff:ffff:ffff,BR
2801:80:570::,2801:80:570:ffff:ffff:ffff:ffff:ffff,BR
@@ -19881,6 +19825,7 @@
2801:160::,2801:160:ff:ffff:ffff:ffff:ffff:ffff,CO
2801:164::,2801:164:ff:ffff:ffff:ffff:ffff:ffff,CO
2801:168::,2801:168:ff:ffff:ffff:ffff:ffff:ffff,AR
+2801:16c::,2801:16c:f:ffff:ffff:ffff:ffff:ffff,CO
2801:170::,2801:170:fff:ffff:ffff:ffff:ffff:ffff,CO
2801:174::,2801:174:f:ffff:ffff:ffff:ffff:ffff,CO
2801:178::,2801:178:1fff:ffff:ffff:ffff:ffff:ffff,CO
@@ -20042,6 +19987,7 @@
2803:1320::,2803:1320:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:1340::,2803:1340:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1380::,2803:1380:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:13a0::,2803:13a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:13c0::,2803:13c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1400::,2803:1400:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:1420::,2803:1420:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20128,6 +20074,7 @@
2803:2320::,2803:2320:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2340::,2803:2340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2380::,2803:2380:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:23a0::,2803:23a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:23c0::,2803:23c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2400::,2803:2400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2420::,2803:2420:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20216,6 +20163,7 @@
2803:3320::,2803:3320:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3340::,2803:3340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3380::,2803:3380:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:33a0::,2803:33a0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:33c0::,2803:33c0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:3400::,2803:3400:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:3420::,2803:3420:ffff:ffff:ffff:ffff:ffff:ffff,CW
@@ -20399,6 +20347,7 @@
2803:5320::,2803:5320:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:5340::,2803:5340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5380::,2803:5380:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:53a0::,2803:53a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:53c0::,2803:53c0:ffff:ffff:ffff:ffff:ffff:ffff,GF
2803:5400::,2803:5400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5420::,2803:5420:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -20489,6 +20438,7 @@
2803:6320::,2803:6320:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:6340::,2803:6340:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:6380::,2803:6380:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:63a0::,2803:63a0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:63c0::,2803:63c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6400::,2803:6400:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:6420::,2803:6420:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20579,6 +20529,7 @@
2803:7320::,2803:7320:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7340::,2803:7340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7380::,2803:7380:ffff:ffff:ffff:ffff:ffff:ffff,SX
+2803:73a0::,2803:73a0:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:73c0::,2803:73c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7400::,2803:7400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7420::,2803:7420:ffff:ffff:ffff:ffff:ffff:ffff,BZ
@@ -20760,6 +20711,7 @@
2803:9320::,2803:9320:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9340::,2803:9340:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9380::,2803:9380:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:93a0::,2803:93a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:93c0::,2803:93c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9400::,2803:9400:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:9420::,2803:9420:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20849,6 +20801,7 @@
2803:a320::,2803:a320:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:a340::,2803:a340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a380::,2803:a380:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:a3a0::,2803:a3a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a3c0::,2803:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a400::,2803:a400:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a420::,2803:a420:ffff:ffff:ffff:ffff:ffff:ffff,BZ
@@ -20903,7 +20856,12 @@
2803:ad00::,2803:ad00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ad20::,2803:ad20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ad40::,2803:ad40:ffff:ffff:ffff:ffff:ffff:ffff,CR
-2803:ad80::,2803:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:ad80::,2803:ad80::ffff:ffff:ffff:ffff:ffff,MX
+2803:ad80:1::,2803:ad80:15:ffff:ffff:ffff:ffff:ffff,PA
+2803:ad80:16::,2803:ad80:16:ffff:ffff:ffff:ffff:ffff,PE
+2803:ad80:17::,2803:ad80:68:ffff:ffff:ffff:ffff:ffff,PA
+2803:ad80:69::,2803:ad80:69:ffff:ffff:ffff:ffff:ffff,CO
+2803:ad80:6a::,2803:ad80:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:ada0::,2803:ada0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:adc0::,2803:adc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ae00::,2803:ae00:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20937,6 +20895,7 @@
2803:b320::,2803:b320:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:b340::,2803:b340:ffff:ffff:ffff:ffff:ffff:ffff,SX
2803:b380::,2803:b380:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:b3a0::,2803:b3a0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:b3c0::,2803:b3c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b400::,2803:b400:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:b420::,2803:b420:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -21035,6 +20994,7 @@
2803:c320::,2803:c320:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:c340::,2803:c340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c380::,2803:c380:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:c3a0::,2803:c3a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:c3c0::,2803:c3c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:c400::,2803:c400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c420::,2803:c420:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -21128,6 +21088,7 @@
2803:d320::,2803:d320:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:d340::,2803:d340:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d380::,2803:d380:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:d3a0::,2803:d3a0:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:d3c0::,2803:d3c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d400::,2803:d400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d420::,2803:d420:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -21195,7 +21156,6 @@
2803:dec0::,2803:dec0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:df00::,2803:df00:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:df20::,2803:df20:ffff:ffff:ffff:ffff:ffff:ffff,AR
-2803:df40::,2803:df40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:df80::,2803:df80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:dfc0::,2803:dfc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:e000::,2803:e000:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -21220,6 +21180,7 @@
2803:e320::,2803:e320:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:e340::,2803:e340:ffff:ffff:ffff:ffff:ffff:ffff,GY
2803:e380::,2803:e380:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:e3a0::,2803:e3a0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:e3c0::,2803:e3c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e400::,2803:e400:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e420::,2803:e420:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -21553,7 +21514,6 @@
2804:2f8::,2804:2f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fc::,2804:2fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:300::,2804:303:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:308::,2804:308:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:30c::,2804:30c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:310::,2804:310:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:314::,2804:314:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22422,7 +22382,6 @@
2804:1170::,2804:1170:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1174::,2804:1174:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:117c::,2804:117c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1180::,2804:1180:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1184::,2804:1184:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1188::,2804:1188:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:118c::,2804:118c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22591,7 +22550,6 @@
2804:1420::,2804:1420:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1424::,2804:1424:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1428::,2804:1428:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:142c::,2804:142c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1430::,2804:1430:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1434::,2804:1434:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1438::,2804:1438:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23200,7 +23158,6 @@
2804:1e14::,2804:1e14:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e18::,2804:1e18:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e20::,2804:1e20:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1e24::,2804:1e24:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e28::,2804:1e28:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e2c::,2804:1e2c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e30::,2804:1e30:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23279,6 +23236,7 @@
2804:1f32::,2804:1f32:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f34::,2804:1f34:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f36::,2804:1f36:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f38::,2804:1f38:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2000::,2804:2000:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2004::,2804:2004:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2008::,2804:2008:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23476,7 +23434,6 @@
2804:2334::,2804:2334:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2338::,2804:2338:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:233c::,2804:233c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2340::,2804:2340:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2344::,2804:2344:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2348::,2804:2348:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:234c::,2804:234c:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -26779,7 +26736,7 @@
2804:5740::,2804:5740:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5744::,2804:5744:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5748::,2804:5748:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:574c::,2804:574c:ffff:ffff:ffff:ffff:ffff:ffff,US
+2804:574c::,2804:574c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5750::,2804:5750:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5754::,2804:5754:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5758::,2804:5758:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -26831,13 +26788,54 @@
2804:5810::,2804:5810:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5814::,2804:5814:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:5818::,2804:5818:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:581c::,2804:581c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5820::,2804:5820:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5824::,2804:5824:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5828::,2804:5828:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:582c::,2804:582c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5830::,2804:5830:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5834::,2804:5834:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5838::,2804:5838:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:583c::,2804:583c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5840::,2804:5840:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5844::,2804:5844:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5848::,2804:5848:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:584c::,2804:584c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5850::,2804:5850:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5854::,2804:5854:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5858::,2804:5858:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:585c::,2804:585c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5860::,2804:5860:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5864::,2804:5864:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5868::,2804:5868:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:586c::,2804:586c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5870::,2804:5870:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5874::,2804:5874:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5878::,2804:5878:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:587c::,2804:587c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5880::,2804:5880:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5884::,2804:5884:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5888::,2804:5888:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:588c::,2804:588c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5890::,2804:5890:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5894::,2804:5894:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5898::,2804:5898:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:589c::,2804:589c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58a0::,2804:58a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58a4::,2804:58a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58a8::,2804:58a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58ac::,2804:58ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58b0::,2804:58b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58b4::,2804:58b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:58b8::,2804:58b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:200::,2806:215:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:217::,2806:220:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:230::,2806:230:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:238::,2806:238::ffff:ffff:ffff:ffff:ffff,MX
2806:238:10::,2806:238:10:ffff:ffff:ffff:ffff:ffff,MX
-2806:239::,2806:240:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:239::,2806:23b:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:23d::,2806:240:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:250::,2806:250:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:260::,2806:270:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:280::,2806:290:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -26849,8 +26847,7 @@
2806:2f0::,2806:2f0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2f4::,2806:2f4:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2f6::,2806:315:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:317::,2806:317:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:319::,2806:31b:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:317::,2806:31b:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:320::,2806:320:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:330::,2806:330:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:350::,2806:350:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -27002,9 +26999,7 @@
2a00:1010::,2a00:1010:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1018::,2a00:1018:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1020::,2a00:1020:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1028::,2a00:1028:96d2:7fff:ffff:ffff:ffff:ffff,CZ
-2a00:1028:96d2:8000::,2a00:1028:96d2:8fff:ffff:ffff:ffff:ffff,US
-2a00:1028:96d2:9000::,2a00:102f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:1028::,2a00:102f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:1030::,2a00:1030:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1040::,2a00:1040:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:1048::,2a00:1048:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -27051,16 +27046,75 @@
2a00:11a8::,2a00:11a8:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a00:11b0::,2a00:11b7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:11b8::,2a00:11b8:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:11c0::,2a00:11c0:7:ffff:ffff:ffff:ffff:ffff,CZ
-2a00:11c0:8::,2a00:11c0:a:ffff:ffff:ffff:ffff:ffff,GB
+2a00:11c0::,2a00:11c0::ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:1::,2a00:11c0:1:ffff:ffff:ffff:ffff:ffff,SI
+2a00:11c0:2::,2a00:11c0:2:ffff:ffff:ffff:ffff:ffff,FR
+2a00:11c0:3::,2a00:11c0:3:ffff:ffff:ffff:ffff:ffff,DE
+2a00:11c0:4::,2a00:11c0:4:ffff:ffff:ffff:ffff:ffff,CZ
+2a00:11c0:5::,2a00:11c0:5:ffff:ffff:ffff:ffff:ffff,CH
+2a00:11c0:6::,2a00:11c0:7:ffff:ffff:ffff:ffff:ffff,JP
+2a00:11c0:8::,2a00:11c0:8:ffff:ffff:ffff:ffff:ffff,GB
+2a00:11c0:9::,2a00:11c0:9:ffff:ffff:ffff:ffff:ffff,IE
+2a00:11c0:a::,2a00:11c0:a:ffff:ffff:ffff:ffff:ffff,GB
2a00:11c0:b::,2a00:11c0:b:ffff:ffff:ffff:ffff:ffff,IT
-2a00:11c0:c::,2a00:11c0:f:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:10::,2a00:11c0:10:ffff:ffff:ffff:ffff:ffff,BR
-2a00:11c0:11::,2a00:11c0:1f:ffff:ffff:ffff:ffff:ffff,AT
-2a00:11c0:20::,2a00:11c0:3f:ffff:ffff:ffff:ffff:ffff,IN
-2a00:11c0:40::,2a00:11c0:62:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:c::,2a00:11c0:d:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:e::,2a00:11c0:e:ffff:ffff:ffff:ffff:ffff,DE
+2a00:11c0:f::,2a00:11c0:10:ffff:ffff:ffff:ffff:ffff,BR
+2a00:11c0:11::,2a00:11c0:11:ffff:ffff:ffff:ffff:ffff,AU
+2a00:11c0:12::,2a00:11c0:12:ffff:ffff:ffff:ffff:ffff,TW
+2a00:11c0:13::,2a00:11c0:13:ffff:ffff:ffff:ffff:ffff,KR
+2a00:11c0:14::,2a00:11c0:14:ffff:ffff:ffff:ffff:ffff,AE
+2a00:11c0:15::,2a00:11c0:15:ffff:ffff:ffff:ffff:ffff,SK
+2a00:11c0:16::,2a00:11c0:16:ffff:ffff:ffff:ffff:ffff,BG
+2a00:11c0:17::,2a00:11c0:17:ffff:ffff:ffff:ffff:ffff,HK
+2a00:11c0:18::,2a00:11c0:18:ffff:ffff:ffff:ffff:ffff,CL
+2a00:11c0:19::,2a00:11c0:19:ffff:ffff:ffff:ffff:ffff,AR
+2a00:11c0:1a::,2a00:11c0:1a:ffff:ffff:ffff:ffff:ffff,IT
+2a00:11c0:1b::,2a00:11c0:1c:ffff:ffff:ffff:ffff:ffff,RU
+2a00:11c0:1d::,2a00:11c0:1d:ffff:ffff:ffff:ffff:ffff,TH
+2a00:11c0:1e::,2a00:11c0:1e:ffff:ffff:ffff:ffff:ffff,ES
+2a00:11c0:1f::,2a00:11c0:1f:ffff:ffff:ffff:ffff:ffff,UA
+2a00:11c0:20::,2a00:11c0:20:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:21::,2a00:11c0:21:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:22::,2a00:11c0:22:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:23::,2a00:11c0:24:ffff:ffff:ffff:ffff:ffff,TR
+2a00:11c0:25::,2a00:11c0:25:ffff:ffff:ffff:ffff:ffff,RS
+2a00:11c0:26::,2a00:11c0:26:ffff:ffff:ffff:ffff:ffff,SG
+2a00:11c0:27::,2a00:11c0:29:ffff:ffff:ffff:ffff:ffff,IN
+2a00:11c0:2a::,2a00:11c0:2a:ffff:ffff:ffff:ffff:ffff,HU
+2a00:11c0:2b::,2a00:11c0:2b:ffff:ffff:ffff:ffff:ffff,SE
+2a00:11c0:2c::,2a00:11c0:2d:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:2e::,2a00:11c0:2e:ffff:ffff:ffff:ffff:ffff,DK
+2a00:11c0:2f::,2a00:11c0:2f:ffff:ffff:ffff:ffff:ffff,JP
+2a00:11c0:30::,2a00:11c0:30:ffff:ffff:ffff:ffff:ffff,PL
+2a00:11c0:31::,2a00:11c0:31:ffff:ffff:ffff:ffff:ffff,PT
+2a00:11c0:32::,2a00:11c0:32:ffff:ffff:ffff:ffff:ffff,LU
+2a00:11c0:33::,2a00:11c0:33:ffff:ffff:ffff:ffff:ffff,HK
+2a00:11c0:34::,2a00:11c0:34:ffff:ffff:ffff:ffff:ffff,SG
+2a00:11c0:35::,2a00:11c0:35:ffff:ffff:ffff:ffff:ffff,TW
+2a00:11c0:36::,2a00:11c0:36:ffff:ffff:ffff:ffff:ffff,AU
+2a00:11c0:37::,2a00:11c0:37:ffff:ffff:ffff:ffff:ffff,KR
+2a00:11c0:38::,2a00:11c0:38:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:39::,2a00:11c0:39:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:3a::,2a00:11c0:3a:ffff:ffff:ffff:ffff:ffff,IN
+2a00:11c0:3b::,2a00:11c0:3b:ffff:ffff:ffff:ffff:ffff,CH
+2a00:11c0:3c::,2a00:11c0:3f:ffff:ffff:ffff:ffff:ffff,IN
+2a00:11c0:40::,2a00:11c0:44:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:45::,2a00:11c0:45:ffff:ffff:ffff:ffff:ffff,IN
+2a00:11c0:46::,2a00:11c0:62:ffff:ffff:ffff:ffff:ffff,AT
2a00:11c0:63::,2a00:11c0:63:ffff:ffff:ffff:ffff:ffff,NL
-2a00:11c0:64::,2a00:11c0:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:64::,2a00:11c0:66:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:67::,2a00:11c0:67:ffff:ffff:ffff:ffff:ffff,ZA
+2a00:11c0:68::,2a00:11c0:68:ffff:ffff:ffff:ffff:ffff,NO
+2a00:11c0:69::,2a00:11c0:75:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:76::,2a00:11c0:76:ffff:ffff:ffff:ffff:ffff,FR
+2a00:11c0:77::,2a00:11c0:77:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:78::,2a00:11c0:78:ffff:ffff:ffff:ffff:ffff,IL
+2a00:11c0:79::,2a00:11c0:82:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:83::,2a00:11c0:83:ffff:ffff:ffff:ffff:ffff,RO
+2a00:11c0:84::,2a00:11c0:84:ffff:ffff:ffff:ffff:ffff,AT
+2a00:11c0:85::,2a00:11c0:85:ffff:ffff:ffff:ffff:ffff,US
+2a00:11c0:86::,2a00:11c0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:11c8::,2a00:11c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:11d0::,2a00:11d0:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:11d8::,2a00:11d8:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27181,7 +27235,7 @@
2a00:14c8::,2a00:14c8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:14d0::,2a00:14d0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:14d8::,2a00:14df:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a00:14e0::,2a00:14e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:14e0::,2a00:14e7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:14e8::,2a00:14ef:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:14f0::,2a00:14f0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:14f8::,2a00:14ff:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -27472,9 +27526,7 @@
2a00:1db8::,2a00:1dbf:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:1dc0::,2a00:1dc0::1:ffff,MD
2a00:1dc0::2:0,2a00:1dc0::2:ffff,US
-2a00:1dc0::3:0,2a00:1dc0:c7ff:ffff:ffff:ffff:ffff:ffff,MD
-2a00:1dc0:c800::,2a00:1dc0:cbff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:1dc0:cc00::,2a00:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a00:1dc0::3:0,2a00:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a00:1dc8::,2a00:1dc8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1dd0::,2a00:1dd0:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:1dd8::,2a00:1ddf:ffff:ffff:ffff:ffff:ffff:ffff,RS
@@ -27731,7 +27783,12 @@
2a00:55a0:5::,2a00:55a0:5:ffff:ffff:ffff:ffff:ffff,GB
2a00:55a0:6::,2a00:55a0:6:ffff:ffff:ffff:ffff:ffff,IL
2a00:55a0:7::,2a00:55a0:7:ffff:ffff:ffff:ffff:ffff,US
-2a00:55a0:8::,2a00:55a0:e9ff:ffff:ffff:ffff:ffff:ffff,IL
+2a00:55a0:8::,2a00:55a0:8:ffff:ffff:ffff:ffff:ffff,IL
+2a00:55a0:9::,2a00:55a0:9:ffff:ffff:ffff:ffff:ffff,US
+2a00:55a0:a::,2a00:55a0:f:ffff:ffff:ffff:ffff:ffff,IL
+2a00:55a0:10::,2a00:55a0:10:ffff:ffff:ffff:ffff:ffff,GB
+2a00:55a0:11::,2a00:55a0:11:ffff:ffff:ffff:ffff:ffff,US
+2a00:55a0:12::,2a00:55a0:e9ff:ffff:ffff:ffff:ffff:ffff,IL
2a00:55a0:ea00::,2a00:55a0:eaff:ffff:ffff:ffff:ffff:ffff,GB
2a00:55a0:eb00::,2a00:55a0:efff:ffff:ffff:ffff:ffff:ffff,IL
2a00:55a0:f000::,2a00:55a0:f0ff:ffff:ffff:ffff:ffff:ffff,GB
@@ -27819,7 +27876,9 @@
2a00:5fc0::,2a00:5fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:5fe0::,2a00:5fe0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:6000::,2a00:6000:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:6020::,2a00:6020:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:6020::,2a00:6020:15bf:ffff:ffff:ffff:ffff:ffff,DE
+2a00:6020:15c0::,2a00:6020:15df:ffff:ffff:ffff:ffff:ffff,NL
+2a00:6020:15e0::,2a00:6020:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:6040::,2a00:6040:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:6060::,2a00:6060:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:6080::,2a00:6080:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -28045,19 +28104,27 @@
2a00:79e0:1c::,2a00:79e0:1c:ffff:ffff:ffff:ffff:ffff,NL
2a00:79e0:1d::,2a00:79e0:1e:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:1f::,2a00:79e0:1f:ffff:ffff:ffff:ffff:ffff,AE
+2a00:79e0:20::,2a00:79e0:22:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:23::,2a00:79e0:23:ffff:ffff:ffff:ffff:ffff,GB
+2a00:79e0:24::,2a00:79e0:24:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:25::,2a00:79e0:25:ffff:ffff:ffff:ffff:ffff,DE
+2a00:79e0:26::,2a00:79e0:26:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:27::,2a00:79e0:27:ffff:ffff:ffff:ffff:ffff,NL
+2a00:79e0:28::,2a00:79e0:28:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:29::,2a00:79e0:29:ffff:ffff:ffff:ffff:ffff,NL
+2a00:79e0:2a::,2a00:79e0:2d:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:2e::,2a00:79e0:2e:ffff:ffff:ffff:ffff:ffff,DE
2a00:79e0:2f::,2a00:79e0:2f:ffff:ffff:ffff:ffff:ffff,FR
+2a00:79e0:30::,2a00:79e0:30:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:31::,2a00:79e0:31:ffff:ffff:ffff:ffff:ffff,SK
+2a00:79e0:32::,2a00:79e0:34:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:35::,2a00:79e0:35:ffff:ffff:ffff:ffff:ffff,IE
2a00:79e0:36::,2a00:79e0:36:ffff:ffff:ffff:ffff:ffff,IT
2a00:79e0:37::,2a00:79e0:37:ffff:ffff:ffff:ffff:ffff,DE
2a00:79e0:38::,2a00:79e0:38:ffff:ffff:ffff:ffff:ffff,IE
-2a00:79e0:39::,2a00:79e0:39:ffff:ffff:ffff:ffff:ffff,PT
+2a00:79e0:39::,2a00:79e0:3a:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:3b::,2a00:79e0:3c:ffff:ffff:ffff:ffff:ffff,FI
+2a00:79e0:3d::,2a00:79e0:3e:ffff:ffff:ffff:ffff:ffff,PT
2a00:79e0:3f::,2a00:79e0:3f:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:40::,2a00:79e0:41:ffff:ffff:ffff:ffff:ffff,IE
2a00:79e0:42::,2a00:79e0:42:ffff:ffff:ffff:ffff:ffff,CH
@@ -28136,7 +28203,8 @@
2a00:79e0:ffe2:1300::,2a00:79e0:ffe2:13ff:ffff:ffff:ffff:ffff,US
2a00:79e0:ffe2:1400::,2a00:79e0:ffe2:14ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:1500::,2a00:79e0:ffe2:15ff:ffff:ffff:ffff:ffff,AE
-2a00:79e0:ffe2:1600::,2a00:79e0:ffe2:1bff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:1600::,2a00:79e0:ffe2:1aff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:1b00::,2a00:79e0:ffe2:1bff:ffff:ffff:ffff:ffff,FI
2a00:79e0:ffe2:1c00::,2a00:79e0:ffe2:1cff:ffff:ffff:ffff:ffff,DE
2a00:79e0:ffe2:1d00::,2a00:79e0:ffe2:1dff:ffff:ffff:ffff:ffff,TW
2a00:79e0:ffe2:1e00::,2a00:79e0:ffe2:1eff:ffff:ffff:ffff:ffff,CH
@@ -28177,7 +28245,7 @@
2a00:79e0:ffe2:4e00::,2a00:79e0:ffe2:4eff:ffff:ffff:ffff:ffff,US
2a00:79e0:ffe2:4f00::,2a00:79e0:ffe2:4fff:ffff:ffff:ffff:ffff,TW
2a00:79e0:ffe2:5000::,2a00:79e0:ffe2:50ff:ffff:ffff:ffff:ffff,NL
-2a00:79e0:ffe2:5100::,2a00:79e0:ffe2:51ff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:5100::,2a00:79e0:ffe2:51ff:ffff:ffff:ffff:ffff,US
2a00:79e0:ffe2:5200::,2a00:79e0:ffe2:52ff:ffff:ffff:ffff:ffff,IE
2a00:79e0:ffe2:5300::,2a00:79e0:ffe2:54ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:5500::,2a00:79e0:ffe2:55ff:ffff:ffff:ffff:ffff,PT
@@ -28200,15 +28268,22 @@
2a00:79e0:ffe2:6900::,2a00:79e0:ffe2:69ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:6a00::,2a00:79e0:ffe2:6aff:ffff:ffff:ffff:ffff,KR
2a00:79e0:ffe2:6b00::,2a00:79e0:ffe2:6bff:ffff:ffff:ffff:ffff,GB
-2a00:79e0:ffe2:6c00::,2a00:79e0:ffe2:6cff:ffff:ffff:ffff:ffff,CH
-2a00:79e0:ffe2:6d00::,2a00:79e0:ffe2:6dff:ffff:ffff:ffff:ffff,US
+2a00:79e0:ffe2:6c00::,2a00:79e0:ffe2:6dff:ffff:ffff:ffff:ffff,US
2a00:79e0:ffe2:6e00::,2a00:79e0:ffe2:71ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:7200::,2a00:79e0:ffe2:72ff:ffff:ffff:ffff:ffff,IL
2a00:79e0:ffe2:7300::,2a00:79e0:ffe2:73ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:7400::,2a00:79e0:ffe2:74ff:ffff:ffff:ffff:ffff,US
2a00:79e0:ffe2:7500::,2a00:79e0:ffe2:76ff:ffff:ffff:ffff:ffff,CH
2a00:79e0:ffe2:7700::,2a00:79e0:ffe2:77ff:ffff:ffff:ffff:ffff,US
-2a00:79e0:ffe2:7800::,2a00:79e1:7f:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:7800::,2a00:79e0:ffe2:78ff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:7900::,2a00:79e0:ffe2:79ff:ffff:ffff:ffff:ffff,IL
+2a00:79e0:ffe2:7a00::,2a00:79e0:ffe2:7aff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:7b00::,2a00:79e0:ffe2:7bff:ffff:ffff:ffff:ffff,US
+2a00:79e0:ffe2:7c00::,2a00:79e0:ffe2:7cff:ffff:ffff:ffff:ffff,DE
+2a00:79e0:ffe2:7d00::,2a00:79e0:ffe2:7dff:ffff:ffff:ffff:ffff,US
+2a00:79e0:ffe2:7e00::,2a00:79e0:ffe2:7fff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:ffe2:8000::,2a00:79e0:ffe2:80ff:ffff:ffff:ffff:ffff,RU
+2a00:79e0:ffe2:8100::,2a00:79e1:7f:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e1:80::,2a00:79e1:80:ff:ffff:ffff:ffff:ffff,NL
2a00:79e1:80:100::,2a00:79e1:abb:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e1:abc::,2a00:79e1:abc:ff:ffff:ffff:ffff:ffff,GB
@@ -28219,7 +28294,10 @@
2a00:79e1:abc:600::,2a00:79e1:abc:6ff:ffff:ffff:ffff:ffff,IN
2a00:79e1:abc:700::,2a00:79e1:abc:7ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:800::,2a00:79e1:abc:8ff:ffff:ffff:ffff:ffff,NZ
-2a00:79e1:abc:900::,2a00:79e1:abc:dff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:900::,2a00:79e1:abc:9ff:ffff:ffff:ffff:ffff,IN
+2a00:79e1:abc:a00::,2a00:79e1:abc:aff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:b00::,2a00:79e1:abc:bff:ffff:ffff:ffff:ffff,IN
+2a00:79e1:abc:c00::,2a00:79e1:abc:dff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:e00::,2a00:79e1:abc:fff:ffff:ffff:ffff:ffff,IN
2a00:79e1:abc:1000::,2a00:79e1:abc:10ff:ffff:ffff:ffff:ffff,DK
2a00:79e1:abc:1100::,2a00:79e1:abc:11ff:ffff:ffff:ffff:ffff,IE
@@ -28228,32 +28306,30 @@
2a00:79e1:abc:1a00::,2a00:79e1:abc:1bff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:1c00::,2a00:79e1:abc:1cff:ffff:ffff:ffff:ffff,IE
2a00:79e1:abc:1d00::,2a00:79e1:abc:1dff:ffff:ffff:ffff:ffff,CH
-2a00:79e1:abc:1e00::,2a00:79e1:abc:1fff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:1e00::,2a00:79e1:abc:1eff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:1f00::,2a00:79e1:abc:1fff:ffff:ffff:ffff:ffff,PH
2a00:79e1:abc:2000::,2a00:79e1:abc:20ff:ffff:ffff:ffff:ffff,CA
-2a00:79e1:abc:2100::,2a00:79e1:abc:21ff:ffff:ffff:ffff:ffff,CN
-2a00:79e1:abc:2200::,2a00:79e1:abc:23ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:2200::,2a00:79e1:abc:22ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:2400::,2a00:79e1:abc:24ff:ffff:ffff:ffff:ffff,AR
2a00:79e1:abc:2500::,2a00:79e1:abc:25ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:2600::,2a00:79e1:abc:26ff:ffff:ffff:ffff:ffff,JP
-2a00:79e1:abc:2700::,2a00:79e1:abc:29ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:2800::,2a00:79e1:abc:28ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:2a00::,2a00:79e1:abc:2cff:ffff:ffff:ffff:ffff,AU
2a00:79e1:abc:2d00::,2a00:79e1:abc:2dff:ffff:ffff:ffff:ffff,BR
-2a00:79e1:abc:2e00::,2a00:79e1:abc:2eff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:2f00::,2a00:79e1:abc:2fff:ffff:ffff:ffff:ffff,CO
2a00:79e1:abc:3000::,2a00:79e1:abc:32ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:3300::,2a00:79e1:abc:33ff:ffff:ffff:ffff:ffff,CA
2a00:79e1:abc:3400::,2a00:79e1:abc:34ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:3500::,2a00:79e1:abc:35ff:ffff:ffff:ffff:ffff,BR
2a00:79e1:abc:3600::,2a00:79e1:abc:36ff:ffff:ffff:ffff:ffff,JP
-2a00:79e1:abc:3700::,2a00:79e1:abc:37ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:3800::,2a00:79e1:abc:3aff:ffff:ffff:ffff:ffff,IN
2a00:79e1:abc:3b00::,2a00:79e1:abc:3dff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:3e00::,2a00:79e1:abc:3eff:ffff:ffff:ffff:ffff,IT
2a00:79e1:abc:3f00::,2a00:79e1:abc:40ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:4100::,2a00:79e1:abc:41ff:ffff:ffff:ffff:ffff,BR
-2a00:79e1:abc:4200::,2a00:79e1:abc:43ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:4200::,2a00:79e1:abc:42ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:4400::,2a00:79e1:abc:44ff:ffff:ffff:ffff:ffff,NL
-2a00:79e1:abc:4500::,2a00:79e1:abc:4aff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:4a00::,2a00:79e1:abc:4aff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:4b00::,2a00:79e1:abc:4bff:ffff:ffff:ffff:ffff,TW
2a00:79e1:abc:4c00::,2a00:79e1:abc:4dff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:4e00::,2a00:79e1:abc:4eff:ffff:ffff:ffff:ffff,GB
@@ -28263,19 +28339,21 @@
2a00:79e1:abc:5200::,2a00:79e1:abc:52ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:5300::,2a00:79e1:abc:54ff:ffff:ffff:ffff:ffff,KR
2a00:79e1:abc:5500::,2a00:79e1:abc:56ff:ffff:ffff:ffff:ffff,MY
-2a00:79e1:abc:5700::,2a00:79e1:abc:57ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:5800::,2a00:79e1:abc:58ff:ffff:ffff:ffff:ffff,TH
-2a00:79e1:abc:5900::,2a00:79e1:abc:61ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:5900::,2a00:79e1:abc:5eff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:6000::,2a00:79e1:abc:61ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:6200::,2a00:79e1:abc:62ff:ffff:ffff:ffff:ffff,TW
-2a00:79e1:abc:6300::,2a00:79e1:abc:63ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:6400::,2a00:79e1:abc:64ff:ffff:ffff:ffff:ffff,CA
-2a00:79e1:abc:6500::,2a00:79e1:abc:68ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:6500::,2a00:79e1:abc:65ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:6700::,2a00:79e1:abc:68ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:6900::,2a00:79e1:abc:69ff:ffff:ffff:ffff:ffff,HK
-2a00:79e1:abc:6a00::,2a00:79e1:abc:6dff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:6b00::,2a00:79e1:abc:6cff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:6e00::,2a00:79e1:abc:6fff:ffff:ffff:ffff:ffff,TW
-2a00:79e1:abc:7000::,2a00:79e1:abc:78ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:7000::,2a00:79e1:abc:75ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:7800::,2a00:79e1:abc:78ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:7900::,2a00:79e1:abc:79ff:ffff:ffff:ffff:ffff,BE
-2a00:79e1:abc:7a00::,2a00:79e1:abc:83ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:7d00::,2a00:79e1:abc:80ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:8200::,2a00:79e1:abc:82ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:8400::,2a00:79e1:abc:84ff:ffff:ffff:ffff:ffff,BE
2a00:79e1:abc:8500::,2a00:79e1:abc:85ff:ffff:ffff:ffff:ffff,BR
2a00:79e1:abc:8600::,2a00:79e1:abc:86ff:ffff:ffff:ffff:ffff,DE
@@ -28284,21 +28362,16 @@
2a00:79e1:abc:8900::,2a00:79e1:abc:89ff:ffff:ffff:ffff:ffff,FI
2a00:79e1:abc:8a00::,2a00:79e1:abc:8aff:ffff:ffff:ffff:ffff,AR
2a00:79e1:abc:8b00::,2a00:79e1:abc:8bff:ffff:ffff:ffff:ffff,FR
-2a00:79e1:abc:8c00::,2a00:79e1:abc:8cff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:8d00::,2a00:79e1:abc:8dff:ffff:ffff:ffff:ffff,NL
2a00:79e1:abc:8e00::,2a00:79e1:abc:8eff:ffff:ffff:ffff:ffff,IT
-2a00:79e1:abc:8f00::,2a00:79e1:abc:90ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:9100::,2a00:79e1:abc:91ff:ffff:ffff:ffff:ffff,TW
2a00:79e1:abc:9200::,2a00:79e1:abc:92ff:ffff:ffff:ffff:ffff,DE
-2a00:79e1:abc:9300::,2a00:79e1:abc:93ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:9400::,2a00:79e1:abc:94ff:ffff:ffff:ffff:ffff,CZ
2a00:79e1:abc:9500::,2a00:79e1:abc:95ff:ffff:ffff:ffff:ffff,GB
2a00:79e1:abc:9600::,2a00:79e1:abc:96ff:ffff:ffff:ffff:ffff,IE
2a00:79e1:abc:9700::,2a00:79e1:abc:97ff:ffff:ffff:ffff:ffff,GR
-2a00:79e1:abc:9800::,2a00:79e1:abc:98ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:9900::,2a00:79e1:abc:99ff:ffff:ffff:ffff:ffff,PL
2a00:79e1:abc:9a00::,2a00:79e1:abc:9aff:ffff:ffff:ffff:ffff,GB
-2a00:79e1:abc:9b00::,2a00:79e1:abc:9bff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:9c00::,2a00:79e1:abc:9cff:ffff:ffff:ffff:ffff,DK
2a00:79e1:abc:9d00::,2a00:79e1:abc:9dff:ffff:ffff:ffff:ffff,KE
2a00:79e1:abc:9e00::,2a00:79e1:abc:9eff:ffff:ffff:ffff:ffff,HU
@@ -28306,18 +28379,15 @@
2a00:79e1:abc:a000::,2a00:79e1:abc:a0ff:ffff:ffff:ffff:ffff,IL
2a00:79e1:abc:a100::,2a00:79e1:abc:a1ff:ffff:ffff:ffff:ffff,AU
2a00:79e1:abc:a200::,2a00:79e1:abc:a2ff:ffff:ffff:ffff:ffff,IL
-2a00:79e1:abc:a300::,2a00:79e1:abc:a3ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:a400::,2a00:79e1:abc:a4ff:ffff:ffff:ffff:ffff,NG
2a00:79e1:abc:a500::,2a00:79e1:abc:a5ff:ffff:ffff:ffff:ffff,PL
2a00:79e1:abc:a600::,2a00:79e1:abc:a6ff:ffff:ffff:ffff:ffff,PT
-2a00:79e1:abc:a700::,2a00:79e1:abc:a7ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:a800::,2a00:79e1:abc:a8ff:ffff:ffff:ffff:ffff,SE
2a00:79e1:abc:a900::,2a00:79e1:abc:a9ff:ffff:ffff:ffff:ffff,UA
2a00:79e1:abc:aa00::,2a00:79e1:abc:aaff:ffff:ffff:ffff:ffff,GB
2a00:79e1:abc:ab00::,2a00:79e1:abc:abff:ffff:ffff:ffff:ffff,CN
2a00:79e1:abc:ac00::,2a00:79e1:abc:acff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:ad00::,2a00:79e1:abc:adff:ffff:ffff:ffff:ffff,KR
-2a00:79e1:abc:ae00::,2a00:79e1:abc:afff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:b000::,2a00:79e1:abc:b0ff:ffff:ffff:ffff:ffff,DE
2a00:79e1:abc:b100::,2a00:79e1:abc:b2ff:ffff:ffff:ffff:ffff,TW
2a00:79e1:abc:b300::,2a00:79e1:abc:b3ff:ffff:ffff:ffff:ffff,AE
@@ -28326,30 +28396,29 @@
2a00:79e1:abc:b600::,2a00:79e1:abc:b6ff:ffff:ffff:ffff:ffff,TR
2a00:79e1:abc:b700::,2a00:79e1:abc:b7ff:ffff:ffff:ffff:ffff,IE
2a00:79e1:abc:b800::,2a00:79e1:abc:b8ff:ffff:ffff:ffff:ffff,TW
-2a00:79e1:abc:b900::,2a00:79e1:abc:bbff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:ba00::,2a00:79e1:abc:bbff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:bc00::,2a00:79e1:abc:bdff:ffff:ffff:ffff:ffff,PL
-2a00:79e1:abc:be00::,2a00:79e1:abc:c1ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:bf00::,2a00:79e1:abc:c1ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:c200::,2a00:79e1:abc:c2ff:ffff:ffff:ffff:ffff,DE
2a00:79e1:abc:c300::,2a00:79e1:abc:c4ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:c500::,2a00:79e1:abc:c5ff:ffff:ffff:ffff:ffff,IE
2a00:79e1:abc:c600::,2a00:79e1:abc:c7ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:c800::,2a00:79e1:abc:c8ff:ffff:ffff:ffff:ffff,FI
-2a00:79e1:abc:c900::,2a00:79e1:abc:cdff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:ca00::,2a00:79e1:abc:caff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:cc00::,2a00:79e1:abc:cdff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:ce00::,2a00:79e1:abc:ceff:ffff:ffff:ffff:ffff,CA
2a00:79e1:abc:cf00::,2a00:79e1:abc:cfff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:d000::,2a00:79e1:abc:d0ff:ffff:ffff:ffff:ffff,TW
-2a00:79e1:abc:d100::,2a00:79e1:abc:d4ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:d100::,2a00:79e1:abc:d1ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:d400::,2a00:79e1:abc:d4ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:d500::,2a00:79e1:abc:d5ff:ffff:ffff:ffff:ffff,MY
-2a00:79e1:abc:d600::,2a00:79e1:abc:d6ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:d700::,2a00:79e1:abc:d7ff:ffff:ffff:ffff:ffff,PT
-2a00:79e1:abc:d800::,2a00:79e1:abc:d8ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:d900::,2a00:79e1:abc:d9ff:ffff:ffff:ffff:ffff,GB
-2a00:79e1:abc:da00::,2a00:79e1:abc:dcff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:db00::,2a00:79e1:abc:dcff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:dd00::,2a00:79e1:abc:ddff:ffff:ffff:ffff:ffff,DE
2a00:79e1:abc:de00::,2a00:79e1:abc:deff:ffff:ffff:ffff:ffff,IE
-2a00:79e1:abc:df00::,2a00:79e1:abc:e1ff:ffff:ffff:ffff:ffff,US
+2a00:79e1:abc:e100::,2a00:79e1:abc:e1ff:ffff:ffff:ffff:ffff,US
2a00:79e1:abc:e200::,2a00:79e1:abc:e2ff:ffff:ffff:ffff:ffff,IN
-2a00:79e1:abc:e300::,2a00:79e1:abc:ffff:ffff:ffff:ffff:ffff,US
2a00:79e1:ac0::,2a00:79e1:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:7a00::,2a00:7a00:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:7a20::,2a00:7a20:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -28949,7 +29018,7 @@
2a00:c600::,2a00:c600:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:c620::,2a00:c620:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:c640::,2a00:c640:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a00:c660::,2a00:c660:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a00:c660::,2a00:c667:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:c680::,2a00:c680:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:c6a0::,2a00:c6a0:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a00:c6c0::,2a00:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -29417,14 +29486,7 @@
2a01:18::,2a01:18:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a01:20::,2a01:20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:28::,2a01:28:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a01:30::,2a01:30:bfff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:30:c001::,2a01:30:c0ff:ffff:ffff:ffff:ffff:ffff,DE
-2a01:30:c100::,2a01:30:c1ff:ffff:ffff:ffff:ffff:ffff,IT
-2a01:30:c300::,2a01:30:c3ff:ffff:ffff:ffff:ffff:ffff,IT
-2a01:30:c400::,2a01:30:c400:ffff:ffff:ffff:ffff:ffff,DE
-2a01:30:c401::,2a01:30:c401:ffff:ffff:ffff:ffff:ffff,NL
-2a01:30:c402::,2a01:30:c402:ffff:ffff:ffff:ffff:ffff,SE
-2a01:30:c403::,2a01:37:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:30::,2a01:37:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:38::,2a01:38:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:40::,2a01:40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:48::,2a01:48:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -29452,8 +29514,8 @@
2a01:d0:8800::,2a01:d0:8bff:ffff:ffff:ffff:ffff:ffff,UA
2a01:d0:8c00::,2a01:d0:93ff:ffff:ffff:ffff:ffff:ffff,GI
2a01:d0:9400::,2a01:d0:97ff:ffff:ffff:ffff:ffff:ffff,UA
-2a01:d0:9800::,2a01:d0:e7ff:ffff:ffff:ffff:ffff:ffff,GI
-2a01:d0:e800::,2a01:d0:ebff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:9800::,2a01:d0:e3ff:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:e400::,2a01:d0:ebff:ffff:ffff:ffff:ffff:ffff,UA
2a01:d0:ec00::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,GI
2a01:d8::,2a01:d8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:e0::,2a01:e0:ffff:ffff:ffff:ffff:ffff:ffff,SK
@@ -29472,7 +29534,31 @@
2a01:110:e008::,2a01:110:e008:ffff:ffff:ffff:ffff:ffff,EG
2a01:110:e009::,2a01:110:e00f:ffff:ffff:ffff:ffff:ffff,GB
2a01:110:e010::,2a01:110:e010:ffff:ffff:ffff:ffff:ffff,ZA
-2a01:110:e011::,2a01:111:2000:3:ffff:ffff:ffff:ffff,GB
+2a01:110:e011::,2a01:110:e01f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e020::,2a01:110:e020:ffff:ffff:ffff:ffff:ffff,MA
+2a01:110:e021::,2a01:110:e027:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e028::,2a01:110:e028:ffff:ffff:ffff:ffff:ffff,MA
+2a01:110:e029::,2a01:110:e02f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e030::,2a01:110:e030:ffff:ffff:ffff:ffff:ffff,KW
+2a01:110:e031::,2a01:110:e031:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e032::,2a01:110:e032:ffff:ffff:ffff:ffff:ffff,IT
+2a01:110:e033::,2a01:110:e033:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e034::,2a01:110:e034:ffff:ffff:ffff:ffff:ffff,BA
+2a01:110:e035::,2a01:110:e035:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e036::,2a01:110:e036:ffff:ffff:ffff:ffff:ffff,LV
+2a01:110:e037::,2a01:110:e037:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e038::,2a01:110:e038:ffff:ffff:ffff:ffff:ffff,DE
+2a01:110:e039::,2a01:110:e03f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e040::,2a01:110:e040:ffff:ffff:ffff:ffff:ffff,DE
+2a01:110:e041::,2a01:110:e041:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e042::,2a01:110:e042:ffff:ffff:ffff:ffff:ffff,HU
+2a01:110:e043::,2a01:110:e043:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e044::,2a01:110:e044:ffff:ffff:ffff:ffff:ffff,DE
+2a01:110:e045::,2a01:110:e04f:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e050::,2a01:110:e050:ffff:ffff:ffff:ffff:ffff,DE
+2a01:110:e051::,2a01:110:e051:ffff:ffff:ffff:ffff:ffff,GB
+2a01:110:e052::,2a01:110:e052:ffff:ffff:ffff:ffff:ffff,HR
+2a01:110:e053::,2a01:111:2000:3:ffff:ffff:ffff:ffff,GB
2a01:111:2000:4::,2a01:111:2000:4:ffff:ffff:ffff:ffff,US
2a01:111:2000:5::,2a01:111:2000:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:2001::,2a01:111:2001:ffff:ffff:ffff:ffff:ffff,US
@@ -29597,84 +29683,271 @@
2a01:111:f400:24a0::,2a01:111:f400:27ff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:2800::,2a01:111:f400:2c00:ffff:ffff:ffff:ffff,US
2a01:111:f400:2c01::,2a01:111:f400:2c02:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:2c03::,2a01:111:f400:2c67:ffff:ffff:ffff:ffff,US
-2a01:111:f400:2c68::,2a01:111:f400:2c74:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:2c75::,2a01:111:f400:2c97:ffff:ffff:ffff:ffff,US
-2a01:111:f400:2c98::,2a01:111:f400:2fff:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:3000::,2a01:111:f400:3001:ffff:ffff:ffff:ffff,US
-2a01:111:f400:3002::,2a01:111:f400:3090:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:3091::,2a01:111:f400:3095:ffff:ffff:ffff:ffff,US
-2a01:111:f400:3096::,2a01:111:f400:31d1:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:31d2::,2a01:111:f400:31e0:ffff:ffff:ffff:ffff,US
-2a01:111:f400:31e1::,2a01:111:f400:33ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2c03::,2a01:111:f400:2caf:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2cb0::,2a01:111:f400:2cb0:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2cb1::,2a01:111:f400:2cb2:ffff:ffff:ffff:ffff,IN
+2a01:111:f400:2cb3::,2a01:111:f400:2cc0:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2cc1::,2a01:111:f400:2cc7:ffff:ffff:ffff:ffff,CL
+2a01:111:f400:2cc8::,2a01:111:f400:2ccc:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2ccd::,2a01:111:f400:2ccf:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2cd0::,2a01:111:f400:2d0f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2d10::,2a01:111:f400:2d16:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2d17::,2a01:111:f400:2d17:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2d18::,2a01:111:f400:2d1f:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2d20::,2a01:111:f400:2d23:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2d24::,2a01:111:f400:2d26:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2d27::,2a01:111:f400:2d27:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2d28::,2a01:111:f400:2d37:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2d38::,2a01:111:f400:2d4b:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2d4c::,2a01:111:f400:2d5f:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:2d60::,2a01:111:f400:2d73:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2d74::,2a01:111:f400:2d89:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2d8a::,2a01:111:f400:2d97:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:2d98::,2a01:111:f400:2d9e:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2d9f::,2a01:111:f400:2d9f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2da0::,2a01:111:f400:2daf:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2db0::,2a01:111:f400:2db0:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2db1::,2a01:111:f400:2db7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2db8::,2a01:111:f400:2db8:ffff:ffff:ffff:ffff,CL
+2a01:111:f400:2db9::,2a01:111:f400:2db9:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2dba::,2a01:111:f400:2dbf:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2dc0::,2a01:111:f400:2dc3:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2dc4::,2a01:111:f400:2dc5:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2dc6::,2a01:111:f400:2deb:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2dec::,2a01:111:f400:2dee:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:2def::,2a01:111:f400:2def:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2df0::,2a01:111:f400:2dff:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:2e00::,2a01:111:f400:2e02:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:2e03::,2a01:111:f400:2e03:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2e04::,2a01:111:f400:2e13:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:2e14::,2a01:111:f400:2e17:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2e18::,2a01:111:f400:2e1d:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2e1e::,2a01:111:f400:2e27:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:2e28::,2a01:111:f400:2e2a:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:2e2b::,2a01:111:f400:2e2b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2e2c::,2a01:111:f400:2e3b:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:2e3c::,2a01:111:f400:2e3c:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2e3d::,2a01:111:f400:2e3f:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:2e40::,2a01:111:f400:2e49:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:2e4a::,2a01:111:f400:2e4f:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:2e50::,2a01:111:f400:2e63:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2e64::,2a01:111:f400:2e67:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2e68::,2a01:111:f400:2e6f:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:2e70::,2a01:111:f400:2e71:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2e72::,2a01:111:f400:2e73:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2e74::,2a01:111:f400:2e8b:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2e8c::,2a01:111:f400:2e8f:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2e90::,2a01:111:f400:2e94:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2e95::,2a01:111:f400:2e97:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2e98::,2a01:111:f400:2e9f:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:2ea0::,2a01:111:f400:2ec7:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2ec8::,2a01:111:f400:2ec9:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:2eca::,2a01:111:f400:2ecd:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2ece::,2a01:111:f400:2ed7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2ed8::,2a01:111:f400:2edf:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2ee0::,2a01:111:f400:2ee8:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:2ee9::,2a01:111:f400:2ef3:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2ef4::,2a01:111:f400:2f1b:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2f1c::,2a01:111:f400:2f2f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2f30::,2a01:111:f400:2f43:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2f44::,2a01:111:f400:2f47:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2f48::,2a01:111:f400:2f49:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2f4a::,2a01:111:f400:2f4a:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:2f4b::,2a01:111:f400:2f4b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2f4c::,2a01:111:f400:2f57:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:2f58::,2a01:111:f400:2f58:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2f59::,2a01:111:f400:2f59:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2f5a::,2a01:111:f400:2f5b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2f5c::,2a01:111:f400:2f6f:ffff:ffff:ffff:ffff,CL
+2a01:111:f400:2f70::,2a01:111:f400:2f7d:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:2f7e::,2a01:111:f400:2f7f:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:2f80::,2a01:111:f400:2f83:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2f84::,2a01:111:f400:2f97:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2f98::,2a01:111:f400:2f9d:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:2f9e::,2a01:111:f400:2f9f:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:2fa0::,2a01:111:f400:2fa1:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:2fa2::,2a01:111:f400:2fb7:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:2fb8::,2a01:111:f400:2fbf:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:2fc0::,2a01:111:f400:2fd1:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:2fd2::,2a01:111:f400:2fd3:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2fd4::,2a01:111:f400:2fd7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2fd8::,2a01:111:f400:2fdf:ffff:ffff:ffff:ffff,BR
+2a01:111:f400:2fe0::,2a01:111:f400:2fe3:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2fe4::,2a01:111:f400:2fe5:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:2fe6::,2a01:111:f400:2fe7:ffff:ffff:ffff:ffff,US
+2a01:111:f400:2fe8::,2a01:111:f400:2fed:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:2fee::,2a01:111:f400:2fef:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:2ff0::,2a01:111:f400:3001:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3002::,2a01:111:f400:3005:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:3006::,2a01:111:f400:3007:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3008::,2a01:111:f400:300f:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:3010::,2a01:111:f400:301f:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:3020::,2a01:111:f400:3020:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:3021::,2a01:111:f400:3021:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3022::,2a01:111:f400:3027:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3028::,2a01:111:f400:3029:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:302a::,2a01:111:f400:303d:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:303e::,2a01:111:f400:303f:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3040::,2a01:111:f400:3050:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3051::,2a01:111:f400:3054:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3055::,2a01:111:f400:3057:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:3058::,2a01:111:f400:305f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3060::,2a01:111:f400:3063:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:3064::,2a01:111:f400:3078:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3079::,2a01:111:f400:308c:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:308d::,2a01:111:f400:308f:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3090::,2a01:111:f400:309f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:30a0::,2a01:111:f400:30a0:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:30a1::,2a01:111:f400:30b4:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:30b5::,2a01:111:f400:30b7:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:30b8::,2a01:111:f400:30bc:ffff:ffff:ffff:ffff,US
+2a01:111:f400:30bd::,2a01:111:f400:30bd:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:30be::,2a01:111:f400:30c7:ffff:ffff:ffff:ffff,US
+2a01:111:f400:30c8::,2a01:111:f400:30c8:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:30c9::,2a01:111:f400:30dc:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:30dd::,2a01:111:f400:30f0:ffff:ffff:ffff:ffff,US
+2a01:111:f400:30f1::,2a01:111:f400:3104:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3105::,2a01:111:f400:3118:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3119::,2a01:111:f400:312c:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:312d::,2a01:111:f400:3140:ffff:ffff:ffff:ffff,CA
+2a01:111:f400:3141::,2a01:111:f400:3154:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3155::,2a01:111:f400:3168:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:3169::,2a01:111:f400:3190:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3191::,2a01:111:f400:3193:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3194::,2a01:111:f400:3197:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:3198::,2a01:111:f400:31e0:ffff:ffff:ffff:ffff,US
+2a01:111:f400:31e1::,2a01:111:f400:320a:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:320b::,2a01:111:f400:321e:ffff:ffff:ffff:ffff,US
+2a01:111:f400:321f::,2a01:111:f400:324c:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:324d::,2a01:111:f400:3251:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3252::,2a01:111:f400:325b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:325c::,2a01:111:f400:325c:ffff:ffff:ffff:ffff,US
+2a01:111:f400:325d::,2a01:111:f400:3270:ffff:ffff:ffff:ffff,KR
+2a01:111:f400:3271::,2a01:111:f400:3284:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:3285::,2a01:111:f400:3298:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:3299::,2a01:111:f400:32ac:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:32ad::,2a01:111:f400:32c0:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:32c1::,2a01:111:f400:32d4:ffff:ffff:ffff:ffff,US
+2a01:111:f400:32d5::,2a01:111:f400:32e8:ffff:ffff:ffff:ffff,DE
+2a01:111:f400:32e9::,2a01:111:f400:32fc:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:32fd::,2a01:111:f400:32ff:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3300::,2a01:111:f400:330f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3310::,2a01:111:f400:3310:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3311::,2a01:111:f400:3324:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3325::,2a01:111:f400:334c:ffff:ffff:ffff:ffff,JP
+2a01:111:f400:334d::,2a01:111:f400:3360:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3361::,2a01:111:f400:3374:ffff:ffff:ffff:ffff,JP
+2a01:111:f400:3375::,2a01:111:f400:3388:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3389::,2a01:111:f400:33b0:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:33b1::,2a01:111:f400:33c4:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:33c5::,2a01:111:f400:33d8:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:33d9::,2a01:111:f400:33ec:ffff:ffff:ffff:ffff,US
+2a01:111:f400:33ed::,2a01:111:f400:33f3:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:33f4::,2a01:111:f400:33ff:ffff:ffff:ffff:ffff,NL
2a01:111:f400:3400::,2a01:111:f400:3432:ffff:ffff:ffff:ffff,US
-2a01:111:f400:3433::,2a01:111:f400:3bff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:3433::,2a01:111:f400:343f:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3440::,2a01:111:f400:3447:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3448::,2a01:111:f400:346f:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:3470::,2a01:111:f400:3483:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:3484::,2a01:111:f400:3487:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:3488::,2a01:111:f400:3492:ffff:ffff:ffff:ffff,US
+2a01:111:f400:3493::,2a01:111:f400:3bff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:3c00::,2a01:111:f400:47ff:ffff:ffff:ffff:ffff,US
2a01:111:f400:4800::,2a01:111:f400:4bff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:4c00::,2a01:111:f400:4fff:ffff:ffff:ffff:ffff,US
2a01:111:f400:5000::,2a01:111:f400:5013:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5014::,2a01:111:f400:502a:ffff:ffff:ffff:ffff,US
-2a01:111:f400:502b::,2a01:111:f400:502b:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:502c::,2a01:111:f400:5033:ffff:ffff:ffff:ffff,US
-2a01:111:f400:5034::,2a01:111:f400:503b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5014::,2a01:111:f400:503b:ffff:ffff:ffff:ffff,US
2a01:111:f400:503c::,2a01:111:f400:5045:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:5046::,2a01:111:f400:5046:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5046::,2a01:111:f400:5046:ffff:ffff:ffff:ffff,US
2a01:111:f400:5047::,2a01:111:f400:504f:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:5050::,2a01:111:f400:505e:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:505f::,2a01:111:f400:505f:ffff:ffff:ffff:ffff,US
-2a01:111:f400:5060::,2a01:111:f400:5062:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5063::,2a01:111:f400:5063:ffff:ffff:ffff:ffff,US
-2a01:111:f400:5064::,2a01:111:f400:5064:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5065::,2a01:111:f400:5067:ffff:ffff:ffff:ffff,US
-2a01:111:f400:5068::,2a01:111:f400:5069:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:506a::,2a01:111:f400:506a:ffff:ffff:ffff:ffff,US
-2a01:111:f400:506b::,2a01:111:f400:506c:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:506d::,2a01:111:f400:506d:ffff:ffff:ffff:ffff,US
-2a01:111:f400:506e::,2a01:111:f400:508d:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:508e::,2a01:111:f400:508e:ffff:ffff:ffff:ffff,AT
-2a01:111:f400:508f::,2a01:111:f400:5093:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5094::,2a01:111:f400:5095:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:5050::,2a01:111:f400:506d:ffff:ffff:ffff:ffff,US
+2a01:111:f400:506e::,2a01:111:f400:5082:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5083::,2a01:111:f400:5095:ffff:ffff:ffff:ffff,AT
2a01:111:f400:5096::,2a01:111:f400:5098:ffff:ffff:ffff:ffff,FI
2a01:111:f400:5099::,2a01:111:f400:5099:ffff:ffff:ffff:ffff,GB
2a01:111:f400:509a::,2a01:111:f400:50a9:ffff:ffff:ffff:ffff,FI
-2a01:111:f400:50aa::,2a01:111:f400:50e6:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:50e7::,2a01:111:f400:50f7:ffff:ffff:ffff:ffff,US
-2a01:111:f400:50f8::,2a01:111:f400:5101:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5102::,2a01:111:f400:5104:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:5105::,2a01:111:f400:5105:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5106::,2a01:111:f400:510d:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:50aa::,2a01:111:f400:50ac:ffff:ffff:ffff:ffff,US
+2a01:111:f400:50ad::,2a01:111:f400:50ad:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:50ae::,2a01:111:f400:50bd:ffff:ffff:ffff:ffff,US
+2a01:111:f400:50be::,2a01:111:f400:50be:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:50bf::,2a01:111:f400:50f9:ffff:ffff:ffff:ffff,US
+2a01:111:f400:50fa::,2a01:111:f400:50fa:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:50fb::,2a01:111:f400:50fc:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:50fd::,2a01:111:f400:50fd:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:50fe::,2a01:111:f400:510d:ffff:ffff:ffff:ffff,IE
2a01:111:f400:510e::,2a01:111:f400:5115:ffff:ffff:ffff:ffff,GB
2a01:111:f400:5116::,2a01:111:f400:511e:ffff:ffff:ffff:ffff,US
-2a01:111:f400:511f::,2a01:111:f400:513d:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:513e::,2a01:111:f400:5140:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:511f::,2a01:111:f400:511f:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:5120::,2a01:111:f400:5120:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5121::,2a01:111:f400:5129:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:512a::,2a01:111:f400:512c:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:512d::,2a01:111:f400:512d:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:512e::,2a01:111:f400:5140:ffff:ffff:ffff:ffff,IE
2a01:111:f400:5141::,2a01:111:f400:5141:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:5142::,2a01:111:f400:514b:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:514c::,2a01:111:f400:514c:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:514d::,2a01:111:f400:514e:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:514f::,2a01:111:f400:517f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5142::,2a01:111:f400:514f:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:5150::,2a01:111:f400:5158:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:5159::,2a01:111:f400:5159:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:515a::,2a01:111:f400:516c:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:516d::,2a01:111:f400:5171:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5172::,2a01:111:f400:5173:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5174::,2a01:111:f400:5174:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:5175::,2a01:111:f400:5175:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:5176::,2a01:111:f400:5176:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5177::,2a01:111:f400:5179:ffff:ffff:ffff:ffff,US
+2a01:111:f400:517a::,2a01:111:f400:517a:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:517b::,2a01:111:f400:517f:ffff:ffff:ffff:ffff,US
2a01:111:f400:5180::,2a01:111:f400:518a:ffff:ffff:ffff:ffff,AU
2a01:111:f400:518b::,2a01:111:f400:518c:ffff:ffff:ffff:ffff,US
2a01:111:f400:518d::,2a01:111:f400:518d:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:518e::,2a01:111:f400:5199:ffff:ffff:ffff:ffff,US
-2a01:111:f400:519a::,2a01:111:f400:51ad:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:51ae::,2a01:111:f400:51bf:ffff:ffff:ffff:ffff,US
-2a01:111:f400:51c0::,2a01:111:f400:5236:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:518e::,2a01:111:f400:51bf:ffff:ffff:ffff:ffff,US
+2a01:111:f400:51c0::,2a01:111:f400:51c9:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:51ca::,2a01:111:f400:51da:ffff:ffff:ffff:ffff,US
+2a01:111:f400:51db::,2a01:111:f400:51db:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:51dc::,2a01:111:f400:51dd:ffff:ffff:ffff:ffff,US
+2a01:111:f400:51de::,2a01:111:f400:51f1:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:51f2::,2a01:111:f400:51ff:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:5200::,2a01:111:f400:520f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5210::,2a01:111:f400:521e:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:521f::,2a01:111:f400:5222:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:5223::,2a01:111:f400:5236:ffff:ffff:ffff:ffff,SG
2a01:111:f400:5237::,2a01:111:f400:5237:ffff:ffff:ffff:ffff,US
-2a01:111:f400:5238::,2a01:111:f400:5269:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:526a::,2a01:111:f400:526a:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5238::,2a01:111:f400:523f:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:5240::,2a01:111:f400:5240:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:5241::,2a01:111:f400:5243:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5244::,2a01:111:f400:5244:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5245::,2a01:111:f400:524f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5250::,2a01:111:f400:5253:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5254::,2a01:111:f400:5256:ffff:ffff:ffff:ffff,US
+2a01:111:f400:5257::,2a01:111:f400:5257:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5258::,2a01:111:f400:526a:ffff:ffff:ffff:ffff,US
2a01:111:f400:526b::,2a01:111:f400:5277:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:5278::,2a01:111:f400:529c:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:529d::,2a01:111:f400:52a0:ffff:ffff:ffff:ffff,US
-2a01:111:f400:52a1::,2a01:111:f400:52a2:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:52a3::,2a01:111:f400:52d7:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:52d8::,2a01:111:f400:52df:ffff:ffff:ffff:ffff,US
-2a01:111:f400:52e0::,2a01:111:f400:52f6:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:52f7::,2a01:111:f400:52f8:ffff:ffff:ffff:ffff,US
-2a01:111:f400:52f9::,2a01:111:f400:53ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5278::,2a01:111:f400:527c:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:527d::,2a01:111:f400:528b:ffff:ffff:ffff:ffff,US
+2a01:111:f400:528c::,2a01:111:f400:528f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5290::,2a01:111:f400:52a0:ffff:ffff:ffff:ffff,US
+2a01:111:f400:52a1::,2a01:111:f400:52af:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:52b0::,2a01:111:f400:52ee:ffff:ffff:ffff:ffff,US
+2a01:111:f400:52ef::,2a01:111:f400:52ef:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:52f0::,2a01:111:f400:52fa:ffff:ffff:ffff:ffff,US
+2a01:111:f400:52fb::,2a01:111:f400:52fb:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:52fc::,2a01:111:f400:530e:ffff:ffff:ffff:ffff,US
+2a01:111:f400:530f::,2a01:111:f400:5322:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:5323::,2a01:111:f400:5336:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:5337::,2a01:111:f400:534a:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:534b::,2a01:111:f400:535d:ffff:ffff:ffff:ffff,US
+2a01:111:f400:535e::,2a01:111:f400:5360:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:5361::,2a01:111:f400:539a:ffff:ffff:ffff:ffff,US
+2a01:111:f400:539b::,2a01:111:f400:539c:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:539d::,2a01:111:f400:53ae:ffff:ffff:ffff:ffff,US
+2a01:111:f400:53af::,2a01:111:f400:53b7:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:53b8::,2a01:111:f400:53bf:ffff:ffff:ffff:ffff,JP
+2a01:111:f400:53c0::,2a01:111:f400:53c2:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:53c3::,2a01:111:f400:53e3:ffff:ffff:ffff:ffff,US
+2a01:111:f400:53e4::,2a01:111:f400:53e4:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:53e5::,2a01:111:f400:53ff:ffff:ffff:ffff:ffff,US
2a01:111:f400:5400::,2a01:111:f400:57ff:ffff:ffff:ffff:ffff,JP
2a01:111:f400:5800::,2a01:111:f400:6007:ffff:ffff:ffff:ffff,AU
-2a01:111:f400:6008::,2a01:111:f400:6009:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:600a::,2a01:111:f400:600b:ffff:ffff:ffff:ffff,US
+2a01:111:f400:6008::,2a01:111:f400:600b:ffff:ffff:ffff:ffff,US
2a01:111:f400:600c::,2a01:111:f400:600d:ffff:ffff:ffff:ffff,NL
2a01:111:f400:600e::,2a01:111:f400:6019:ffff:ffff:ffff:ffff,US
2a01:111:f400:601a::,2a01:111:f400:601d:ffff:ffff:ffff:ffff,IE
@@ -29682,53 +29955,56 @@
2a01:111:f400:6022::,2a01:111:f400:6023:ffff:ffff:ffff:ffff,IE
2a01:111:f400:6024::,2a01:111:f400:6029:ffff:ffff:ffff:ffff,US
2a01:111:f400:602a::,2a01:111:f400:602b:ffff:ffff:ffff:ffff,KR
-2a01:111:f400:602c::,2a01:111:f400:602f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:602c::,2a01:111:f400:602d:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:602e::,2a01:111:f400:602f:ffff:ffff:ffff:ffff,US
2a01:111:f400:6030::,2a01:111:f400:6031:ffff:ffff:ffff:ffff,SG
2a01:111:f400:6032::,2a01:111:f400:6033:ffff:ffff:ffff:ffff,MY
2a01:111:f400:6034::,2a01:111:f400:6035:ffff:ffff:ffff:ffff,HK
2a01:111:f400:6036::,2a01:111:f400:6039:ffff:ffff:ffff:ffff,BR
2a01:111:f400:603a::,2a01:111:f400:603d:ffff:ffff:ffff:ffff,US
-2a01:111:f400:603e::,2a01:111:f400:6043:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:6044::,2a01:111:f400:6045:ffff:ffff:ffff:ffff,US
+2a01:111:f400:603e::,2a01:111:f400:6041:ffff:ffff:ffff:ffff,CL
+2a01:111:f400:6042::,2a01:111:f400:6045:ffff:ffff:ffff:ffff,US
2a01:111:f400:6046::,2a01:111:f400:6047:ffff:ffff:ffff:ffff,IN
-2a01:111:f400:6048::,2a01:111:f400:6049:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:604a::,2a01:111:f400:604d:ffff:ffff:ffff:ffff,US
-2a01:111:f400:604e::,2a01:111:f400:6055:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:6048::,2a01:111:f400:6055:ffff:ffff:ffff:ffff,US
2a01:111:f400:6056::,2a01:111:f400:6059:ffff:ffff:ffff:ffff,IN
2a01:111:f400:605a::,2a01:111:f400:605b:ffff:ffff:ffff:ffff,US
2a01:111:f400:605c::,2a01:111:f400:605d:ffff:ffff:ffff:ffff,IN
-2a01:111:f400:605e::,2a01:111:f400:605f:ffff:ffff:ffff:ffff,US
-2a01:111:f400:6060::,2a01:111:f400:6062:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:605e::,2a01:111:f400:6061:ffff:ffff:ffff:ffff,US
+2a01:111:f400:6062::,2a01:111:f400:6062:ffff:ffff:ffff:ffff,GB
2a01:111:f400:6063::,2a01:111:f400:6065:ffff:ffff:ffff:ffff,AT
2a01:111:f400:6066::,2a01:111:f400:6069:ffff:ffff:ffff:ffff,FI
2a01:111:f400:606a::,2a01:111:f400:606b:ffff:ffff:ffff:ffff,DE
2a01:111:f400:606c::,2a01:111:f400:606c:ffff:ffff:ffff:ffff,IN
2a01:111:f400:606d::,2a01:111:f400:606e:ffff:ffff:ffff:ffff,DE
2a01:111:f400:606f::,2a01:111:f400:6070:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:6071::,2a01:111:f400:6072:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:6073::,2a01:111:f400:6076:ffff:ffff:ffff:ffff,US
+2a01:111:f400:6071::,2a01:111:f400:6076:ffff:ffff:ffff:ffff,US
2a01:111:f400:6077::,2a01:111:f400:607a:ffff:ffff:ffff:ffff,GB
2a01:111:f400:607b::,2a01:111:f400:607c:ffff:ffff:ffff:ffff,US
2a01:111:f400:607d::,2a01:111:f400:607e:ffff:ffff:ffff:ffff,NL
2a01:111:f400:607f::,2a01:111:f400:607f:ffff:ffff:ffff:ffff,KR
-2a01:111:f400:6080::,2a01:111:f400:6081:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:6080::,2a01:111:f400:6080:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:6081::,2a01:111:f400:6081:ffff:ffff:ffff:ffff,AT
2a01:111:f400:6082::,2a01:111:f400:6082:ffff:ffff:ffff:ffff,IE
2a01:111:f400:6083::,2a01:111:f400:6083:ffff:ffff:ffff:ffff,AU
2a01:111:f400:6084::,2a01:111:f400:6085:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:6086::,2a01:111:f400:6087:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:6086::,2a01:111:f400:6086:ffff:ffff:ffff:ffff,MY
+2a01:111:f400:6087::,2a01:111:f400:6087:ffff:ffff:ffff:ffff,GB
2a01:111:f400:6088::,2a01:111:f400:608b:ffff:ffff:ffff:ffff,US
2a01:111:f400:608c::,2a01:111:f400:608c:ffff:ffff:ffff:ffff,JP
2a01:111:f400:608d::,2a01:111:f400:608e:ffff:ffff:ffff:ffff,US
2a01:111:f400:608f::,2a01:111:f400:608f:ffff:ffff:ffff:ffff,SG
-2a01:111:f400:6090::,2a01:111:f400:6090:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:6090::,2a01:111:f400:6090:ffff:ffff:ffff:ffff,AU
2a01:111:f400:6091::,2a01:111:f400:6091:ffff:ffff:ffff:ffff,US
-2a01:111:f400:6092::,2a01:111:f400:6092:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:6092::,2a01:111:f400:6092:ffff:ffff:ffff:ffff,HK
2a01:111:f400:6093::,2a01:111:f400:6094:ffff:ffff:ffff:ffff,US
2a01:111:f400:6095::,2a01:111:f400:6095:ffff:ffff:ffff:ffff,BR
-2a01:111:f400:6096::,2a01:111:f400:6096:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:6097::,2a01:111:f400:6098:ffff:ffff:ffff:ffff,US
+2a01:111:f400:6096::,2a01:111:f400:6098:ffff:ffff:ffff:ffff,US
2a01:111:f400:6099::,2a01:111:f400:6099:ffff:ffff:ffff:ffff,CL
-2a01:111:f400:609a::,2a01:111:f400:60a5:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:609a::,2a01:111:f400:609d:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:609e::,2a01:111:f400:609f:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:60a0::,2a01:111:f400:60a1:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:60a2::,2a01:111:f400:60a3:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:60a4::,2a01:111:f400:60a5:ffff:ffff:ffff:ffff,IN
2a01:111:f400:60a6::,2a01:111:f400:60a6:ffff:ffff:ffff:ffff,BR
2a01:111:f400:60a7::,2a01:111:f400:60a8:ffff:ffff:ffff:ffff,CA
2a01:111:f400:60a9::,2a01:111:f400:60a9:ffff:ffff:ffff:ffff,GB
@@ -29742,9 +30018,18 @@
2a01:111:f400:60b9::,2a01:111:f400:60b9:ffff:ffff:ffff:ffff,GB
2a01:111:f400:60ba::,2a01:111:f400:60bb:ffff:ffff:ffff:ffff,DE
2a01:111:f400:60bc::,2a01:111:f400:60bd:ffff:ffff:ffff:ffff,JP
-2a01:111:f400:60be::,2a01:111:f400:60c2:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:60be::,2a01:111:f400:60bf:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:60c0::,2a01:111:f400:60c2:ffff:ffff:ffff:ffff,JP
2a01:111:f400:60c3::,2a01:111:f400:60c4:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:60c5::,2a01:111:f400:707f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:60c5::,2a01:111:f400:6fff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7000::,2a01:111:f400:7000:ffff:ffff:ffff:ffff,US
+2a01:111:f400:7001::,2a01:111:f400:700f:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:7010::,2a01:111:f400:7023:ffff:ffff:ffff:ffff,US
+2a01:111:f400:7024::,2a01:111:f400:7037:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:7038::,2a01:111:f400:703f:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:7040::,2a01:111:f400:704b:ffff:ffff:ffff:ffff,JP
+2a01:111:f400:704c::,2a01:111:f400:705b:ffff:ffff:ffff:ffff,US
+2a01:111:f400:705c::,2a01:111:f400:707f:ffff:ffff:ffff:ffff,IN
2a01:111:f400:7080::,2a01:111:f400:7080:ffff:ffff:ffff:ffff,US
2a01:111:f400:7081::,2a01:111:f400:7081:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7082::,2a01:111:f400:7084:ffff:ffff:ffff:ffff,US
@@ -29755,8 +30040,8 @@
2a01:111:f400:7092::,2a01:111:f400:70b1:ffff:ffff:ffff:ffff,GB
2a01:111:f400:70b2::,2a01:111:f400:70b5:ffff:ffff:ffff:ffff,HK
2a01:111:f400:70b6::,2a01:111:f400:70b7:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:70b8::,2a01:111:f400:70d1:ffff:ffff:ffff:ffff,HK
-2a01:111:f400:70d2::,2a01:111:f400:70e7:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:70b8::,2a01:111:f400:70e6:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:70e7::,2a01:111:f400:70e7:ffff:ffff:ffff:ffff,GB
2a01:111:f400:70e8::,2a01:111:f400:7116:ffff:ffff:ffff:ffff,IE
2a01:111:f400:7117::,2a01:111:f400:73ff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7400::,2a01:111:f400:7405:ffff:ffff:ffff:ffff,US
@@ -29791,7 +30076,9 @@
2a01:111:f400:7e11::,2a01:111:f400:7e11:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e12::,2a01:111:f400:7e12:ffff:ffff:ffff:ffff,AT
2a01:111:f400:7e13::,2a01:111:f400:7e13:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:7e14::,2a01:111:f400:7e1b:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e14::,2a01:111:f400:7e19:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e1a::,2a01:111:f400:7e1a:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:7e1b::,2a01:111:f400:7e1b:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e1c::,2a01:111:f400:7e1c:ffff:ffff:ffff:ffff,FI
2a01:111:f400:7e1d::,2a01:111:f400:7e1d:ffff:ffff:ffff:ffff,AT
2a01:111:f400:7e1e::,2a01:111:f400:7e1e:ffff:ffff:ffff:ffff,NL
@@ -29814,11 +30101,11 @@
2a01:111:f400:7e5c::,2a01:111:f400:7e5e:ffff:ffff:ffff:ffff,CA
2a01:111:f400:7e5f::,2a01:111:f400:7e7f:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e80::,2a01:111:f400:7e80:ffff:ffff:ffff:ffff,US
-2a01:111:f400:7e81::,2a01:111:f400:7e82:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:7e83::,2a01:111:f400:7e84:ffff:ffff:ffff:ffff,US
+2a01:111:f400:7e81::,2a01:111:f400:7e81:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e82::,2a01:111:f400:7e84:ffff:ffff:ffff:ffff,US
2a01:111:f400:7e85::,2a01:111:f400:7e89:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:7e8a::,2a01:111:f400:7e8a:ffff:ffff:ffff:ffff,US
-2a01:111:f400:7e8b::,2a01:111:f400:7e8d:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e8a::,2a01:111:f400:7e8c:ffff:ffff:ffff:ffff,US
+2a01:111:f400:7e8d::,2a01:111:f400:7e8d:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e8e::,2a01:111:f400:7e8e:ffff:ffff:ffff:ffff,US
2a01:111:f400:7e8f::,2a01:111:f400:7e8f:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e90::,2a01:111:f400:7e90:ffff:ffff:ffff:ffff,AU
@@ -29827,15 +30114,19 @@
2a01:111:f400:7e94::,2a01:111:f400:7e95:ffff:ffff:ffff:ffff,IN
2a01:111:f400:7e96::,2a01:111:f400:7e96:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e97::,2a01:111:f400:7e97:ffff:ffff:ffff:ffff,SG
-2a01:111:f400:7e98::,2a01:111:f400:7e99:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e98::,2a01:111:f400:7e98:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7e99::,2a01:111:f400:7e99:ffff:ffff:ffff:ffff,ZA
2a01:111:f400:7e9a::,2a01:111:f400:7e9a:ffff:ffff:ffff:ffff,US
2a01:111:f400:7e9b::,2a01:111:f400:7e9d:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7e9e::,2a01:111:f400:7e9f:ffff:ffff:ffff:ffff,JP
-2a01:111:f400:7ea0::,2a01:111:f400:7ea3:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7ea0::,2a01:111:f400:7ea2:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7ea3::,2a01:111:f400:7ea3:ffff:ffff:ffff:ffff,SG
2a01:111:f400:7ea4::,2a01:111:f400:7ea7:ffff:ffff:ffff:ffff,IN
2a01:111:f400:7ea8::,2a01:111:f400:7ea8:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:7ea9::,2a01:111:f400:7ea9:ffff:ffff:ffff:ffff,US
-2a01:111:f400:7eaa::,2a01:111:f400:7eb3:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7ea9::,2a01:111:f400:7eab:ffff:ffff:ffff:ffff,US
+2a01:111:f400:7eac::,2a01:111:f400:7eb0:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:7eb1::,2a01:111:f400:7eb1:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:7eb2::,2a01:111:f400:7eb3:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7eb4::,2a01:111:f400:7eb5:ffff:ffff:ffff:ffff,AU
2a01:111:f400:7eb6::,2a01:111:f400:7eb7:ffff:ffff:ffff:ffff,GB
2a01:111:f400:7eb8::,2a01:111:f400:7eb8:ffff:ffff:ffff:ffff,HK
@@ -29856,9 +30147,7 @@
2a01:111:f400:c000::,2a01:111:f400:c3ff:ffff:ffff:ffff:ffff,FI
2a01:111:f400:c400::,2a01:111:f400:dfff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e000::,2a01:111:f400:e003:ffff:ffff:ffff:ffff,US
-2a01:111:f400:e004::,2a01:111:f400:e007:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e008::,2a01:111:f400:e008:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e009::,2a01:111:f400:e009:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e004::,2a01:111:f400:e009:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e00a::,2a01:111:f400:e00a:ffff:ffff:ffff:ffff,IE
2a01:111:f400:e00b::,2a01:111:f400:e021:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e022::,2a01:111:f400:e023:ffff:ffff:ffff:ffff,HK
@@ -29923,25 +30212,32 @@
2a01:111:f400:e0ea::,2a01:111:f400:e0ec:ffff:ffff:ffff:ffff,US
2a01:111:f400:e0ed::,2a01:111:f400:e0ed:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e0ee::,2a01:111:f400:e0ef:ffff:ffff:ffff:ffff,US
-2a01:111:f400:e0f0::,2a01:111:f400:e0f1:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e0f0::,2a01:111:f400:e0f0:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:e0f1::,2a01:111:f400:e0f1:ffff:ffff:ffff:ffff,HK
2a01:111:f400:e0f2::,2a01:111:f400:e0f2:ffff:ffff:ffff:ffff,KR
2a01:111:f400:e0f3::,2a01:111:f400:e0f3:ffff:ffff:ffff:ffff,MY
2a01:111:f400:e0f4::,2a01:111:f400:e0f4:ffff:ffff:ffff:ffff,KR
2a01:111:f400:e0f5::,2a01:111:f400:e0f5:ffff:ffff:ffff:ffff,MY
-2a01:111:f400:e0f6::,2a01:111:f400:e147:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e148::,2a01:111:f400:e148:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e149::,2a01:111:f400:e163:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e164::,2a01:111:f400:e164:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e165::,2a01:111:f400:e1bf:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e1c0::,2a01:111:f400:e1c0:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e1c1::,2a01:111:f400:e1d3:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e1d4::,2a01:111:f400:e1d4:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:e1d5::,2a01:111:f400:e232:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e0f6::,2a01:111:f400:e117:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e118::,2a01:111:f400:e118:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:e119::,2a01:111:f400:e119:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:e11a::,2a01:111:f400:e147:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e148::,2a01:111:f400:e149:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:e14a::,2a01:111:f400:e14b:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:e14c::,2a01:111:f400:e163:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e164::,2a01:111:f400:e165:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:e166::,2a01:111:f400:e167:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:e168::,2a01:111:f400:e1bf:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e1c0::,2a01:111:f400:e1c1:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:e1c2::,2a01:111:f400:e1d3:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e1d4::,2a01:111:f400:e1d5:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:e1d6::,2a01:111:f400:e1d7:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:e1d8::,2a01:111:f400:e232:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e233::,2a01:111:f400:e235:ffff:ffff:ffff:ffff,HK
2a01:111:f400:e236::,2a01:111:f400:e237:ffff:ffff:ffff:ffff,SG
2a01:111:f400:e238::,2a01:111:f400:e283:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e284::,2a01:111:f400:e287:ffff:ffff:ffff:ffff,US
-2a01:111:f400:e288::,2a01:111:f400:e288:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e288::,2a01:111:f400:e288:ffff:ffff:ffff:ffff,SG
2a01:111:f400:e289::,2a01:111:f400:e289:ffff:ffff:ffff:ffff,HK
2a01:111:f400:e28a::,2a01:111:f400:e28b:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e28c::,2a01:111:f400:e28c:ffff:ffff:ffff:ffff,SG
@@ -29953,9 +30249,7 @@
2a01:111:f400:e2b8::,2a01:111:f400:e2b9:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e2ba::,2a01:111:f400:e2cb:ffff:ffff:ffff:ffff,US
2a01:111:f400:e2cc::,2a01:111:f400:e2cd:ffff:ffff:ffff:ffff,HK
-2a01:111:f400:e2ce::,2a01:111:f400:e2ce:ffff:ffff:ffff:ffff,US
-2a01:111:f400:e2cf::,2a01:111:f400:e2cf:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:e2d0::,2a01:111:f400:e2d3:ffff:ffff:ffff:ffff,US
+2a01:111:f400:e2ce::,2a01:111:f400:e2d3:ffff:ffff:ffff:ffff,US
2a01:111:f400:e2d4::,2a01:111:f400:e2d5:ffff:ffff:ffff:ffff,HK
2a01:111:f400:e2d6::,2a01:111:f400:e2d7:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e2d8::,2a01:111:f400:e2d9:ffff:ffff:ffff:ffff,HK
@@ -30020,17 +30314,47 @@
2a01:111:f400:e35c::,2a01:111:f400:e35c:ffff:ffff:ffff:ffff,NL
2a01:111:f400:e35d::,2a01:111:f400:e35d:ffff:ffff:ffff:ffff,GB
2a01:111:f400:e35e::,2a01:111:f400:e35f:ffff:ffff:ffff:ffff,IE
-2a01:111:f400:e360::,2a01:111:f400:f34c:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:f34d::,2a01:111:f400:f34d:ffff:ffff:ffff:ffff,US
-2a01:111:f400:f34e::,2a01:111:f400:f35a:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:f35b::,2a01:111:f400:f361:ffff:ffff:ffff:ffff,US
-2a01:111:f400:f362::,2a01:111:f400:f367:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:f368::,2a01:111:f400:f36c:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:f36d::,2a01:111:f400:f380:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:e360::,2a01:111:f400:f1ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f200::,2a01:111:f400:f206:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f207::,2a01:111:f400:f20b:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:f20c::,2a01:111:f400:f20c:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f20d::,2a01:111:f400:f212:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f213::,2a01:111:f400:f226:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:f227::,2a01:111:f400:f22f:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f230::,2a01:111:f400:f25b:ffff:ffff:ffff:ffff,IN
+2a01:111:f400:f25c::,2a01:111:f400:f2ff:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f300::,2a01:111:f400:f305:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:f306::,2a01:111:f400:f30a:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f30b::,2a01:111:f400:f30f:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:f310::,2a01:111:f400:f31f:ffff:ffff:ffff:ffff,FI
+2a01:111:f400:f320::,2a01:111:f400:f32b:ffff:ffff:ffff:ffff,HK
+2a01:111:f400:f32c::,2a01:111:f400:f32f:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f330::,2a01:111:f400:f348:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f349::,2a01:111:f400:f349:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f34a::,2a01:111:f400:f363:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f364::,2a01:111:f400:f366:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f367::,2a01:111:f400:f367:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f368::,2a01:111:f400:f36f:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:f370::,2a01:111:f400:f371:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f372::,2a01:111:f400:f372:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f373::,2a01:111:f400:f375:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f376::,2a01:111:f400:f37f:ffff:ffff:ffff:ffff,AT
+2a01:111:f400:f380::,2a01:111:f400:f380:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f381::,2a01:111:f400:f381:ffff:ffff:ffff:ffff,AT
-2a01:111:f400:f382::,2a01:111:f400:f500:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f382::,2a01:111:f400:f395:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f396::,2a01:111:f400:f396:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f397::,2a01:111:f400:f39d:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f39e::,2a01:111:f400:f39e:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f39f::,2a01:111:f400:f3a3:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f3a4::,2a01:111:f400:f3aa:ffff:ffff:ffff:ffff,IE
+2a01:111:f400:f3ab::,2a01:111:f400:f3d2:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f3d3::,2a01:111:f400:f3d4:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f3d5::,2a01:111:f400:f3ff:ffff:ffff:ffff:ffff,US
+2a01:111:f400:f400::,2a01:111:f400:f500:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f501::,2a01:111:f400:f506:ffff:ffff:ffff:ffff,NL
-2a01:111:f400:f507::,2a01:111:f400:f511:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f507::,2a01:111:f400:f50a:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f50b::,2a01:111:f400:f50b:ffff:ffff:ffff:ffff,NL
+2a01:111:f400:f50c::,2a01:111:f400:f511:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f512::,2a01:111:f400:f521:ffff:ffff:ffff:ffff,US
2a01:111:f400:f522::,2a01:111:f400:f522:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f523::,2a01:111:f400:f531:ffff:ffff:ffff:ffff,US
@@ -30039,8 +30363,8 @@
2a01:111:f400:f544::,2a01:111:f400:f547:ffff:ffff:ffff:ffff,BR
2a01:111:f400:f548::,2a01:111:f400:f54e:ffff:ffff:ffff:ffff,HK
2a01:111:f400:f54f::,2a01:111:f400:f554:ffff:ffff:ffff:ffff,JP
-2a01:111:f400:f555::,2a01:111:f400:f556:ffff:ffff:ffff:ffff,SG
-2a01:111:f400:f557::,2a01:111:f400:f55e:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:f555::,2a01:111:f400:f557:ffff:ffff:ffff:ffff,SG
+2a01:111:f400:f558::,2a01:111:f400:f55e:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f55f::,2a01:111:f400:f565:ffff:ffff:ffff:ffff,US
2a01:111:f400:f566::,2a01:111:f400:f566:ffff:ffff:ffff:ffff,GB
2a01:111:f400:f567::,2a01:111:f400:f568:ffff:ffff:ffff:ffff,JP
@@ -30127,8 +30451,8 @@
2a01:111:f402:180d::,2a01:111:f402:180d:ffff:ffff:ffff:ffff,GB
2a01:111:f402:180e::,2a01:111:f402:180f:ffff:ffff:ffff:ffff,US
2a01:111:f402:1810::,2a01:111:f402:1bff:ffff:ffff:ffff:ffff,GB
-2a01:111:f402:1c00::,2a01:111:f402:1c00:ffff:ffff:ffff:ffff,BR
-2a01:111:f402:1c01::,2a01:111:f402:1fff:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:1c00::,2a01:111:f402:1c01:ffff:ffff:ffff:ffff,BR
+2a01:111:f402:1c02::,2a01:111:f402:1fff:ffff:ffff:ffff:ffff,GB
2a01:111:f402:2000::,2a01:111:f402:23ff:ffff:ffff:ffff:ffff,NL
2a01:111:f402:2400::,2a01:111:f402:27ff:ffff:ffff:ffff:ffff,US
2a01:111:f402:2800::,2a01:111:f402:2bff:ffff:ffff:ffff:ffff,IE
@@ -30174,7 +30498,8 @@
2a01:111:f402:cc00::,2a01:111:f402:cfff:ffff:ffff:ffff:ffff,IN
2a01:111:f402:d000::,2a01:111:f402:d3ff:ffff:ffff:ffff:ffff,IE
2a01:111:f402:d400::,2a01:111:f402:d7ff:ffff:ffff:ffff:ffff,IN
-2a01:111:f402:d800::,2a01:111:f404:c05:ffff:ffff:ffff:ffff,GB
+2a01:111:f402:d800::,2a01:111:f402:dfff:ffff:ffff:ffff:ffff,AE
+2a01:111:f402:e000::,2a01:111:f404:c05:ffff:ffff:ffff:ffff,GB
2a01:111:f404:c06::,2a01:111:f404:c0a:ffff:ffff:ffff:ffff,US
2a01:111:f404:c0b::,2a01:111:f404:33ff:ffff:ffff:ffff:ffff,GB
2a01:111:f404:3400::,2a01:111:f404:37ff:ffff:ffff:ffff:ffff,US
@@ -30220,9 +30545,7 @@
2a01:111:f406:a806::,2a01:111:f406:afff:ffff:ffff:ffff:ffff,GB
2a01:111:f406:b000::,2a01:111:f406:b3ff:ffff:ffff:ffff:ffff,JP
2a01:111:f406:b400::,2a01:111:f406:b7ff:ffff:ffff:ffff:ffff,SG
-2a01:111:f406:b800::,2a01:111:f409:ffff:ffff:ffff:ffff:ffff,GB
-2a01:111:f40a::,2a01:111:f40a:ffff:ffff:ffff:ffff:ffff,US
-2a01:111:f40b::,2a01:111:f4ff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:111:f406:b800::,2a01:111:f4ff:ffff:ffff:ffff:ffff:ffff,GB
2a01:111:f500::,2a01:111:f5ff:ffff:ffff:ffff:ffff:ffff,US
2a01:111:f600::,2a01:111:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:120::,2a01:127:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30870,7 +31193,9 @@
2a01:7a7:2:1324::,2a01:7a7:2:1324:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1325::,2a01:7a7:2:1336:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1337::,2a01:7a7:2:1337:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1338::,2a01:7a7:2:1343:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1338::,2a01:7a7:2:133b:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:133c::,2a01:7a7:2:133c:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:133d::,2a01:7a7:2:1343:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1344::,2a01:7a7:2:1344:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1345::,2a01:7a7:2:1346:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1347::,2a01:7a7:2:1348:ffff:ffff:ffff:ffff,DE
@@ -30997,8 +31322,8 @@
2a01:7a7:2:146d::,2a01:7a7:2:146d:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:146e::,2a01:7a7:2:146e:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:146f::,2a01:7a7:2:1476:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:1477::,2a01:7a7:2:1478:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1479::,2a01:7a7:2:1481:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1477::,2a01:7a7:2:1479:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:147a::,2a01:7a7:2:1481:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1482::,2a01:7a7:2:1482:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1483::,2a01:7a7:2:1488:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1489::,2a01:7a7:2:1489:ffff:ffff:ffff:ffff,DE
@@ -31032,7 +31357,9 @@
2a01:7a7:2:14de::,2a01:7a7:2:14de:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:14df::,2a01:7a7:2:14e1:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:14e2::,2a01:7a7:2:14e2:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:14e3::,2a01:7a7:2:14f7:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:14e3::,2a01:7a7:2:14ec:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:14ed::,2a01:7a7:2:14ed:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:14ee::,2a01:7a7:2:14f7:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:14f8::,2a01:7a7:2:14f9:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:14fa::,2a01:7a7:2:14ff:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1500::,2a01:7a7:2:1501:ffff:ffff:ffff:ffff,DE
@@ -31123,8 +31450,8 @@
2a01:7a7:2:160a::,2a01:7a7:2:160a:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:160b::,2a01:7a7:2:160c:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:160d::,2a01:7a7:2:160d:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:160e::,2a01:7a7:2:160e:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:160f::,2a01:7a7:2:1611:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:160e::,2a01:7a7:2:160f:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1610::,2a01:7a7:2:1611:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1612::,2a01:7a7:2:1614:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1615::,2a01:7a7:2:1615:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1616::,2a01:7a7:2:1619:ffff:ffff:ffff:ffff,DE
@@ -31316,7 +31643,9 @@
2a01:7a7:2:1852::,2a01:7a7:2:1852:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1853::,2a01:7a7:2:1858:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1859::,2a01:7a7:2:185a:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:185b::,2a01:7a7:2:1867:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:185b::,2a01:7a7:2:1863:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1864::,2a01:7a7:2:1864:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1865::,2a01:7a7:2:1867:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1868::,2a01:7a7:2:186a:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:186b::,2a01:7a7:2:186e:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:186f::,2a01:7a7:2:186f:ffff:ffff:ffff:ffff,DE
@@ -31494,8 +31823,8 @@
2a01:7a7:2:1adc::,2a01:7a7:2:1adc:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1add::,2a01:7a7:2:1ae3:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1ae4::,2a01:7a7:2:1ae5:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1ae6::,2a01:7a7:2:1aee:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:1aef::,2a01:7a7:2:1af0:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1ae6::,2a01:7a7:2:1aed:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1aee::,2a01:7a7:2:1af0:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1af1::,2a01:7a7:2:1af5:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1af6::,2a01:7a7:2:1af6:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1af7::,2a01:7a7:2:1afb:ffff:ffff:ffff:ffff,FR
@@ -31503,9 +31832,9 @@
2a01:7a7:2:1afd::,2a01:7a7:2:1b0a:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1b0b::,2a01:7a7:2:1b0c:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1b0d::,2a01:7a7:2:1b14:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:1b15::,2a01:7a7:2:1b18:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1b19::,2a01:7a7:2:1b20:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:1b21::,2a01:7a7:2:1b21:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1b15::,2a01:7a7:2:1b1b:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1b1c::,2a01:7a7:2:1b1e:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1b1f::,2a01:7a7:2:1b21:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1b22::,2a01:7a7:2:1b2e:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1b2f::,2a01:7a7:2:1b30:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1b31::,2a01:7a7:2:1b32:ffff:ffff:ffff:ffff,FR
@@ -31516,7 +31845,9 @@
2a01:7a7:2:1b4e::,2a01:7a7:2:1b4f:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1b50::,2a01:7a7:2:1b50:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1b51::,2a01:7a7:2:1b52:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1b53::,2a01:7a7:2:1b5a:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1b53::,2a01:7a7:2:1b57:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1b58::,2a01:7a7:2:1b58:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1b59::,2a01:7a7:2:1b5a:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1b5b::,2a01:7a7:2:1b5c:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1b5d::,2a01:7a7:2:1b61:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1b62::,2a01:7a7:2:1b64:ffff:ffff:ffff:ffff,DE
@@ -31536,7 +31867,9 @@
2a01:7a7:2:1ba4::,2a01:7a7:2:1ba4:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1ba5::,2a01:7a7:2:1ba6:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1ba7::,2a01:7a7:2:1ba9:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1baa::,2a01:7a7:2:1bb3:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1baa::,2a01:7a7:2:1baa:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1bab::,2a01:7a7:2:1bab:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1bac::,2a01:7a7:2:1bb3:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1bb4::,2a01:7a7:2:1bb5:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1bb6::,2a01:7a7:2:1bb8:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1bb9::,2a01:7a7:2:1bb9:ffff:ffff:ffff:ffff,DE
@@ -31570,7 +31903,9 @@
2a01:7a7:2:1c68::,2a01:7a7:2:1c68:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1c69::,2a01:7a7:2:1c6e:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1c6f::,2a01:7a7:2:1c6f:ffff:ffff:ffff:ffff,DE
-2a01:7a7:2:1c70::,2a01:7a7:2:1c92:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1c70::,2a01:7a7:2:1c76:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1c77::,2a01:7a7:2:1c77:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1c78::,2a01:7a7:2:1c92:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1c93::,2a01:7a7:2:1c93:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1c94::,2a01:7a7:2:1ca6:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1ca7::,2a01:7a7:2:1ca7:ffff:ffff:ffff:ffff,DE
@@ -31585,7 +31920,15 @@
2a01:7a7:2:1d55::,2a01:7a7:2:1d7c:ffff:ffff:ffff:ffff,FR
2a01:7a7:2:1d7d::,2a01:7a7:2:1d7d:ffff:ffff:ffff:ffff,DE
2a01:7a7:2:1d7e::,2a01:7a7:2:1da2:ffff:ffff:ffff:ffff,FR
-2a01:7a7:2:1da3::,2a01:7a7:2:ffff:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1da3::,2a01:7a7:2:1da3:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1da4::,2a01:7a7:2:1dd9:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1dda::,2a01:7a7:2:1dda:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1ddb::,2a01:7a7:2:1dec:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1ded::,2a01:7a7:2:1ded:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1dee::,2a01:7a7:2:1e07:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1e08::,2a01:7a7:2:1e08:ffff:ffff:ffff:ffff,DE
+2a01:7a7:2:1e09::,2a01:7a7:2:1e12:ffff:ffff:ffff:ffff,FR
+2a01:7a7:2:1e13::,2a01:7a7:2:ffff:ffff:ffff:ffff:ffff,DE
2a01:7a7:3::,2a01:7a7:4:ff:ffff:ffff:ffff:ffff,FR
2a01:7a7:4:100::,2a01:7a7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:7a8::,2a01:7a8:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -32584,7 +32927,13 @@
2a01:b740:a02::,2a01:b740:a02:ffff:ffff:ffff:ffff:ffff,NL
2a01:b740:a03::,2a01:b740:a03:ffff:ffff:ffff:ffff:ffff,IE
2a01:b740:a04::,2a01:b740:a04:ffff:ffff:ffff:ffff:ffff,DE
-2a01:b740:a05::,2a01:b740:a13:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a05::,2a01:b740:a05:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a06::,2a01:b740:a06:ffff:ffff:ffff:ffff:ffff,GB
+2a01:b740:a07::,2a01:b740:a07:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a08::,2a01:b740:a08:ffff:ffff:ffff:ffff:ffff,SE
+2a01:b740:a09::,2a01:b740:a0f:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a10::,2a01:b740:a10:ffff:ffff:ffff:ffff:ffff,DE
+2a01:b740:a11::,2a01:b740:a13:ffff:ffff:ffff:ffff:ffff,IE
2a01:b740:a14::,2a01:b740:a14:ffff:ffff:ffff:ffff:ffff,DK
2a01:b740:a15::,2a01:b740:a15:ffff:ffff:ffff:ffff:ffff,IE
2a01:b740:a16::,2a01:b740:a16:ffff:ffff:ffff:ffff:ffff,DE
@@ -32594,7 +32943,20 @@
2a01:b740:a1a::,2a01:b740:a1a:ffff:ffff:ffff:ffff:ffff,DE
2a01:b740:a1b::,2a01:b740:a1b:ffff:ffff:ffff:ffff:ffff,IE
2a01:b740:a1c::,2a01:b740:a1c:ffff:ffff:ffff:ffff:ffff,NL
-2a01:b740:a1d::,2a01:b740:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a1d::,2a01:b740:a1d:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a1e::,2a01:b740:a1e:ffff:ffff:ffff:ffff:ffff,DK
+2a01:b740:a1f::,2a01:b740:a21:ffff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a22::,2a01:b740:a22:ffff:ffff:ffff:ffff:ffff,FR
+2a01:b740:a23::,2a01:b740:a41:ff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a41:100::,2a01:b740:a41:1ff:ffff:ffff:ffff:ffff,GB
+2a01:b740:a41:200::,2a01:b740:a41:2ff:ffff:ffff:ffff:ffff,DE
+2a01:b740:a41:300::,2a01:b740:a41:3ff:ffff:ffff:ffff:ffff,NL
+2a01:b740:a41:400::,2a01:b740:a41:4ff:ffff:ffff:ffff:ffff,GB
+2a01:b740:a41:500::,2a01:b740:a41:6ff:ffff:ffff:ffff:ffff,DE
+2a01:b740:a41:700::,2a01:b740:a41:7ff:ffff:ffff:ffff:ffff,SE
+2a01:b740:a41:800::,2a01:b740:a41:bff:ffff:ffff:ffff:ffff,IE
+2a01:b740:a41:c00::,2a01:b740:a41:cff:ffff:ffff:ffff:ffff,RU
+2a01:b740:a41:d00::,2a01:b740:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:b760::,2a01:b760:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a01:b780::,2a01:b780:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a01:b7a0::,2a01:b7a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -33278,17 +33640,17 @@
2a02:1205:34f9:a000::,2a02:1205:34f9:b7ff:ffff:ffff:ffff:ffff,DE
2a02:1205:34f9:b800::,2a02:1205:5031:7fff:ffff:ffff:ffff:ffff,CH
2a02:1205:5031:8000::,2a02:1205:5031:ffff:ffff:ffff:ffff:ffff,FR
-2a02:1205:5032::,2a02:1205:c6af:ffff:ffff:ffff:ffff:ffff,CH
-2a02:1205:c6b0::,2a02:1205:c6b0:7fff:ffff:ffff:ffff:ffff,DE
-2a02:1205:c6b0:8000::,2a02:120b:7f9:ffff:ffff:ffff:ffff:ffff,CH
-2a02:120b:7fa::,2a02:120b:7fa:3fff:ffff:ffff:ffff:ffff,FR
-2a02:120b:7fa:4000::,2a02:120b:2c3c:ffff:ffff:ffff:ffff:ffff,CH
-2a02:120b:2c3d::,2a02:120b:2c3d:1fff:ffff:ffff:ffff:ffff,IT
-2a02:120b:2c3d:2000::,2a02:120b:c3e5:7fff:ffff:ffff:ffff:ffff,CH
-2a02:120b:c3e5:8000::,2a02:120b:c3e5:bfff:ffff:ffff:ffff:ffff,FR
-2a02:120b:c3e5:c000::,2a02:120b:c3f4:bfff:ffff:ffff:ffff:ffff,CH
-2a02:120b:c3f4:c000::,2a02:120b:c3f4:dfff:ffff:ffff:ffff:ffff,GB
-2a02:120b:c3f4:e000::,2a02:121f:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1205:5032::,2a02:1205:503c:7fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:503c:8000::,2a02:1205:503c:bfff:ffff:ffff:ffff:ffff,DE
+2a02:1205:503c:c000::,2a02:1205:5074:7fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:5074:8000::,2a02:1205:5074:9fff:ffff:ffff:ffff:ffff,FR
+2a02:1205:5074:a000::,2a02:1205:c6b0:3fff:ffff:ffff:ffff:ffff,CH
+2a02:1205:c6b0:4000::,2a02:1205:c6b0:7fff:ffff:ffff:ffff:ffff,DE
+2a02:1205:c6b0:8000::,2a02:120b:2c4d:3fff:ffff:ffff:ffff:ffff,CH
+2a02:120b:2c4d:4000::,2a02:120b:2c4d:7fff:ffff:ffff:ffff:ffff,DE
+2a02:120b:2c4d:8000::,2a02:120b:c3f4:bfff:ffff:ffff:ffff:ffff,CH
+2a02:120b:c3f4:c000::,2a02:120b:c3f4:c7ff:ffff:ffff:ffff:ffff,GB
+2a02:120b:c3f4:c800::,2a02:121f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:1300::,2a02:1300:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a02:1308::,2a02:130f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:1310::,2a02:1310:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -33415,7 +33777,9 @@
2a02:20b0::,2a02:20b7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:20b8::,2a02:20b8:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a02:20c0::,2a02:20c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:20c8::,2a02:20c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:20c8::,2a02:20c8:232f:ffff:ffff:ffff:ffff:ffff,NO
+2a02:20c8:2330::,2a02:20c8:2330:ffff:ffff:ffff:ffff:ffff,US
+2a02:20c8:2331::,2a02:20c8:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:20d0::,2a02:20d7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:20d8::,2a02:20df:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:20e0::,2a02:20e7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -33569,7 +33933,7 @@
2a02:25d0::,2a02:25d0:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a02:25d8::,2a02:25d8:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a02:25e0::,2a02:25e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a02:25e8::,2a02:25e8:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a02:25e8::,2a02:25ef:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:25f8::,2a02:25f8:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a02:2600::,2a02:2600:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:2608::,2a02:2608:ffff:ffff:ffff:ffff:ffff:ffff,HR
@@ -34312,13 +34676,7 @@
2a02:80e0::,2a02:80e3:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a02:8100::,2a02:811f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:8200::,2a02:821f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:8300::,2a02:8308:ff:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:8308:100::,2a02:8308:13f:ffff:ffff:ffff:ffff:ffff,RU
-2a02:8308:140::,2a02:8308:a03d:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:8308:a03e::,2a02:8308:a03f:ffff:ffff:ffff:ffff:ffff,UA
-2a02:8308:a040::,2a02:8308:a041:ffff:ffff:ffff:ffff:ffff,CZ
-2a02:8308:a042::,2a02:8308:a043:ffff:ffff:ffff:ffff:ffff,UA
-2a02:8308:a044::,2a02:830f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:8300::,2a02:830f:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:8380::,2a02:838f:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a02:8400::,2a02:847f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:8800::,2a02:88ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -34357,6 +34715,7 @@
2a02:af40::,2a02:af47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:af80::,2a02:af87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:b000::,2a02:b1ff:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:c000::,2a02:c007:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:c040::,2a02:c047:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a02:c080::,2a02:c087:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:c0c0::,2a02:c0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -34386,7 +34745,7 @@
2a02:c600::,2a02:c607:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:c640::,2a02:c647:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a02:c680::,2a02:c681:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:c690::,2a02:c691:ffff:ffff:ffff:ffff:ffff:ffff,AD
+2a02:c690::,2a02:c691:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:c6a0::,2a02:c6a3:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:c6c0::,2a02:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:c6c1::,2a02:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -34981,9 +35340,7 @@
2a03:2820::,2a03:2820:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a03:2840::,2a03:2840:ffff:ffff:ffff:ffff:ffff:ffff,US
2a03:2860::,2a03:2860:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:2880::,2a03:2880:1fff:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2880:2000::,2a03:2880:23ff:ffff:ffff:ffff:ffff:ffff,US
-2a03:2880:2400::,2a03:2887:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a03:2880::,2a03:2887:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:28a0::,2a03:28a0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:28c0::,2a03:28c0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:28e0::,2a03:28e0:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -35521,6 +35878,7 @@
2a03:6b60::,2a03:6b60:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:6b80::,2a03:6b80:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:6ba0::,2a03:6ba0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:6bc0::,2a03:6bc7:ffff:ffff:ffff:ffff:ffff:ffff,MT
2a03:6c00::,2a03:6c00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:6c20::,2a03:6c20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:6c40::,2a03:6c40:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -35592,7 +35950,7 @@
2a03:74a0::,2a03:74a0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:74c0::,2a03:74c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:74e0::,2a03:74e0:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a03:7500::,2a03:7500:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:7500::,2a03:7507:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:7520::,2a03:7520:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:7540::,2a03:7540:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7560::,2a03:7560:ffff:ffff:ffff:ffff:ffff:ffff,PS
@@ -35637,7 +35995,7 @@
2a03:7a40:1::,2a03:7a40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:7a80::,2a03:7a80:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a03:7aa0::,2a03:7aa0:ffff:ffff:ffff:ffff:ffff:ffff,IM
-2a03:7ac0::,2a03:7ac0:ffff:ffff:ffff:ffff:ffff:ffff,AD
+2a03:7ac0::,2a03:7ac0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:7ae0::,2a03:7ae0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:7b00::,2a03:7b00:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:7b20::,2a03:7b20:ffff:ffff:ffff:ffff:ffff:ffff,KZ
@@ -35867,7 +36225,7 @@
2a03:9480::,2a03:9480:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:94a0::,2a03:94a0:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:94c0::,2a03:94c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:94e0::,2a03:94e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a03:94e0::,2a03:94e7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:9500::,2a03:9500:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:9520::,2a03:9520:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:9540::,2a03:9540:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -36145,27 +36503,8 @@
2a03:b060::,2a03:b060:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:b080::,2a03:b080:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:b0a0::,2a03:b0a0:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a03:b0c0::,2a03:b0c0::107:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:108::,2a03:b0c0::108:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:109::,2a03:b0c0::125:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:126::,2a03:b0c0::129:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:12a::,2a03:b0c0::12f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:130::,2a03:b0c0::139:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:13a::,2a03:b0c0::13f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:140::,2a03:b0c0::149:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:14a::,2a03:b0c0::14f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:150::,2a03:b0c0::155:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:156::,2a03:b0c0::100f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1010::,2a03:b0c0::1019:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:101a::,2a03:b0c0::101f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1020::,2a03:b0c0::1029:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:102a::,2a03:b0c0::102f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1030::,2a03:b0c0::1039:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:103a::,2a03:b0c0::103f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1040::,2a03:b0c0::1049:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:104a::,2a03:b0c0::104f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1050::,2a03:b0c0::1050:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:1051::,2a03:b0c0:1:ffff:ffff:ffff:ffff:ffff,GB
+2a03:b0c0::,2a03:b0c0::ffff:ffff:ffff:ffff:ffff,NL
+2a03:b0c0:1::,2a03:b0c0:1:ffff:ffff:ffff:ffff:ffff,GB
2a03:b0c0:2::,2a03:b0c0:2:cf:ffff:ffff:ffff:ffff,DE
2a03:b0c0:2:d0::,2a03:b0c0:2:d0:ffff:ffff:ffff:ffff,NL
2a03:b0c0:2:d1::,2a03:b0c0:2:ef:ffff:ffff:ffff:ffff,DE
@@ -36802,9 +37141,9 @@
2a03:d540::,2a03:d540:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:d580::,2a03:d587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:d5c0::,2a03:d5c0:ff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:d5c0:100::,2a03:d5c0:1bff:ffff:ffff:ffff:ffff:ffff,IL
-2a03:d5c0:1c00::,2a03:d5c0:1fff:ffff:ffff:ffff:ffff:ffff,US
-2a03:d5c0:2000::,2a03:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2a03:d5c0:100::,2a03:d5c0:1c0f:ffff:ffff:ffff:ffff:ffff,IL
+2a03:d5c0:1c10::,2a03:d5c0:1c1f:ffff:ffff:ffff:ffff:ffff,US
+2a03:d5c0:1c20::,2a03:d5c0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a03:d600::,2a03:d607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:d640::,2a03:d640:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:d680::,2a03:d680::ffff:ffff:ffff:ffff:ffff,DE
@@ -36872,11 +37211,7 @@
2a03:e480::,2a03:e480:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e500::,2a03:e500:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a03:e540::,2a03:e540:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:e580::,2a03:e581:1:ffff:ffff:ffff:ffff:ffff,FI
-2a03:e581:2::,2a03:e581:2:ffff:ffff:ffff:ffff:ffff,SE
-2a03:e581:3::,2a03:e581:e:ffff:ffff:ffff:ffff:ffff,FI
-2a03:e581:f::,2a03:e581:f:ffff:ffff:ffff:ffff:ffff,GB
-2a03:e581:10::,2a03:e587:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a03:e580::,2a03:e587:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a03:e5c0::,2a03:e5c0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:e600::,2a03:e600:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a03:e640::,2a03:e640:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37188,7 +37523,9 @@
2a04:2c40::,2a04:2c47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:2c80::,2a04:2c87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:2cc0::,2a04:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:2d00::,2a04:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a04:2d00::,2a04:2d00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a04:2d01::,2a04:2d01::ffff:ffff:ffff:ffff:ffff,HK
+2a04:2d01:1::,2a04:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:2d40::,2a04:2d47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:2d80::,2a04:2d87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:2dc0::,2a04:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
@@ -37268,6 +37605,7 @@
2a04:3dc0::,2a04:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:3e00::,2a04:3e07:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a04:3e40::,2a04:3e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a04:3e80::,2a04:3e87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:3ec0::,2a04:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:3f00::,2a04:3f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:3f40::,2a04:3f47:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37439,6 +37777,7 @@
2a04:6700::,2a04:6707:ffff:ffff:ffff:ffff:ffff:ffff,MT
2a04:6740::,2a04:6747:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:6780::,2a04:6787:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a04:67c0::,2a04:67c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:6800::,2a04:6807:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a04:6840::,2a04:6847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:6880::,2a04:6887:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37470,6 +37809,8 @@
2a04:6e80:2::,2a04:6e80:2:ffff:ffff:ffff:ffff:ffff,GB
2a04:6e80:3::,2a04:6e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:6ec0::,2a04:6ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a04:6f00::,2a04:6f00:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a04:6f02::,2a04:6f07:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a04:6f40::,2a04:6f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:6f80::,2a04:6f83:ffff:ffff:ffff:ffff:ffff:ffff,QA
2a04:6fa0::,2a04:6fa1:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -37599,6 +37940,7 @@
2a04:8b80::,2a04:8b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:8bc0::,2a04:8bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:8c00::,2a04:8c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:8c40::,2a04:8c47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:8c80::,2a04:8c87:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a04:8cc0::,2a04:8cc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:8d00::,2a04:8d07:ffff:ffff:ffff:ffff:ffff:ffff,MK
@@ -37611,6 +37953,7 @@
2a04:8e90::,2a04:8e91:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:8ea0::,2a04:8ea3:ffff:ffff:ffff:ffff:ffff:ffff,US
2a04:8ea4::,2a04:8ea7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:8ec0::,2a04:8ec0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:8f00::,2a04:8f07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:8f40::,2a04:8f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:8f80::,2a04:8f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -37654,6 +37997,7 @@
2a04:9800::,2a04:9807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:9840::,2a04:9847:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a04:9880::,2a04:9887:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a04:98c0::,2a04:98c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a04:9900::,2a04:9907:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:9940::,2a04:9947:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:9980::,2a04:9987:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -37712,7 +38056,6 @@
2a04:a500::,2a04:a507:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:a540::,2a04:a547:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:a580::,2a04:a587:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a04:a5c0::,2a04:a5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:a600::,2a04:a607:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a04:a640::,2a04:a647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:a680::,2a04:a687:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -37758,6 +38101,7 @@
2a04:b100::,2a04:b107:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:b140::,2a04:b147:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:b180::,2a04:b180:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a04:b181::,2a04:b187:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a04:b1c0::,2a04:b1c7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a04:b200::,2a04:b207:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:b240::,2a04:b247:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -37822,7 +38166,6 @@
2a04:bd40::,2a04:bd47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:bd80::,2a04:bd87:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a04:bdc0::,2a04:bdc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a04:be00::,2a04:be03:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:be20::,2a04:be23:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:be40::,2a04:be47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:be80::,2a04:be87:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -37845,6 +38188,7 @@
2a04:c2c0::,2a04:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a04:c300::,2a04:c307:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:c340::,2a04:c347:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:c380::,2a04:c387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:c3c0::,2a04:c3c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a04:c400::,2a04:c407:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a04:c440::,2a04:c441:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -38071,6 +38415,7 @@
2a04:f500::,2a04:f507:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:f540::,2a04:f547:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a04:f580::,2a04:f587:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:f5c0::,2a04:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:f600::,2a04:f607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:f640::,2a04:f647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:f680::,2a04:f687:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -38170,6 +38515,7 @@
2a05:d40::,2a05:d47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d80::,2a05:d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:dc0::,2a05:dc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a05:e00::,2a05:e07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:e40::,2a05:e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:e80::,2a05:e87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:ec0::,2a05:ec7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -38192,6 +38538,7 @@
2a05:12c0::,2a05:12c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:1300::,2a05:1307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:1340::,2a05:1347:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a05:13c0::,2a05:13c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:1400::,2a05:1407:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:1440::,2a05:1447:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:1480::,2a05:1487:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -38207,6 +38554,7 @@
2a05:1680::,2a05:1687:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:16c0::,2a05:16c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:1700::,2a05:1707:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a05:1740::,2a05:1747:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a05:1780::,2a05:1787:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:17c0::,2a05:17c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:1800::,2a05:1807:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -38328,6 +38676,7 @@
2a05:33c0::,2a05:33c7:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a05:3400::,2a05:3407:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:3440::,2a05:3447:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:3480::,2a05:3487:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:34c0::,2a05:34c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:3500::,2a05:3507:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:3540::,2a05:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -38542,7 +38891,6 @@
2a05:6580::,2a05:6587:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:65c0::,2a05:65c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:6600::,2a05:6607:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a05:6640::,2a05:6647:ffff:ffff:ffff:ffff:ffff:ffff,VA
2a05:6680::,2a05:6687:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:66c0::,2a05:66c1:4097:ffff:ffff:ffff:ffff:ffff,US
2a05:66c1:40a0::,2a05:66c1:7fff:ffff:ffff:ffff:ffff:ffff,US
@@ -38810,6 +39158,7 @@
2a05:a200::,2a05:a207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:a280::,2a05:a287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:a2c0::,2a05:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,SA
+2a05:a300::,2a05:a307:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:a340::,2a05:a347:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:a380::,2a05:a387:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:a3c0::,2a05:a3c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -38827,6 +39176,7 @@
2a05:a6c0::,2a05:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:a700::,2a05:a707:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:a740::,2a05:a747:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:a780::,2a05:a787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:a7c0::,2a05:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:a800::,2a05:a807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:a840::,2a05:a847:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -38883,11 +39233,13 @@
2a05:b200::,2a05:b207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:b240::,2a05:b247:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:b280::,2a05:b287:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:b2c0::,2a05:b2c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:b300::,2a05:b307:ffff:ffff:ffff:ffff:ffff:ffff,SC
2a05:b340::,2a05:b347:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a05:b380::,2a05:b387:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b3c0::,2a05:b3c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b400::,2a05:b400:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:b480::,2a05:b487:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b4c0::,2a05:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a05:b500::,2a05:b507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b540::,2a05:b547:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -38907,6 +39259,7 @@
2a05:b840::,2a05:b847:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b880::,2a05:b887:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:b8c0::,2a05:b8c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:b900::,2a05:b907:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b940::,2a05:b947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b980::,2a05:b987:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a05:b9c0::,2a05:b9c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -38958,7 +39311,7 @@
2a05:c500::,2a05:c507:ffff:ffff:ffff:ffff:ffff:ffff,US
2a05:c540::,2a05:c547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:c580::,2a05:c587:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a05:c5c0::,2a05:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a05:c5c0:1::,2a05:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:c600::,2a05:c607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:c640::,2a05:c647:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:c680::,2a05:c680:d052:ffff:ffff:ffff:ffff:ffff,AT
@@ -39338,6 +39691,7 @@
2a06:9c0::,2a06:9c7:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a06:a00::,2a06:a07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a40::,2a06:a47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:a80::,2a06:a87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:ac0::,2a06:ac7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:b00::,2a06:b07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:b40::,2a06:b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -39368,6 +39722,7 @@
2a06:1140::,2a06:1147:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:1180::,2a06:1187:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a06:11c0::,2a06:11c0:f:ffff:ffff:ffff:ffff:ffff,GB
+2a06:11c0:10::,2a06:11c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:1200::,2a06:1207:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1240::,2a06:1247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:1280::,2a06:1280:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -39378,6 +39733,7 @@
2a06:12c0::,2a06:12c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1300::,2a06:1307:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1340::,2a06:1347:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a06:1380::,2a06:1387:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:13c0::,2a06:13c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1400::,2a06:1407:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:1440::,2a06:1447:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39385,6 +39741,7 @@
2a06:14c0::,2a06:14c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1500::,2a06:1507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1540::,2a06:1547:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:1580::,2a06:1587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:15c0::,2a06:15c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1600::,2a06:1607:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1640::,2a06:1647:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -39421,6 +39778,7 @@
2a06:1dc0::,2a06:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:1e00::,2a06:1e07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:1e40::,2a06:1e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:1e80::,2a06:1e87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:1ec0::,2a06:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:1f00::,2a06:1f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:1f40::,2a06:1f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39438,6 +39796,7 @@
2a06:2200::,2a06:2207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:2240::,2a06:2247:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:2280::,2a06:2287:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a06:22c0::,2a06:22c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:2300::,2a06:2307:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:2340::,2a06:2347:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:2380::,2a06:2387:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39531,7 +39890,7 @@
2a06:3680::,2a06:3687:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:36c0::,2a06:36c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:3700::,2a06:3707:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:3740::,2a06:3747:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a06:3740::,2a06:3747:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:3780::,2a06:3787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:37c0::,2a06:37c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:3800::,2a06:3807:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -39546,6 +39905,7 @@
2a06:3a40::,2a06:3a47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3a80::,2a06:3a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:3ac0::,2a06:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a06:3b00::,2a06:3b07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3b40::,2a06:3b47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3b80::,2a06:3b87:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -39625,6 +39985,7 @@
2a06:48c0::,2a06:48c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:4900::,2a06:4907:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:4940::,2a06:4947:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a06:4980::,2a06:4980:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a06:49c0::,2a06:49c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:4a00::,2a06:4a07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:4a40::,2a06:4a47:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -39723,7 +40084,8 @@
2a06:5f00::,2a06:5f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:5f40::,2a06:5f40:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:5f80::,2a06:5f87:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a06:5fc0::,2a06:5fc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:5fc0::,2a06:5fc0::ffff:ffff:ffff:ffff:ffff,US
+2a06:5fc0:1::,2a06:5fc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:6000::,2a06:6007:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:6040::,2a06:6047:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:6080::,2a06:6087:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -39734,6 +40096,7 @@
2a06:61c0::,2a06:61c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:6200::,2a06:6207:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:6240::,2a06:6247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a06:6280::,2a06:6287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:62c0::,2a06:62c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:6300::,2a06:6307:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:6340::,2a06:6347:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -39803,6 +40166,7 @@
2a06:7244::,2a06:7244:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:7245::,2a06:7245::ffff:ffff:ffff:ffff:ffff,DE
2a06:7246::,2a06:7246:1f:ffff:ffff:ffff:ffff:ffff,US
+2a06:7247::,2a06:7247:7:ffff:ffff:ffff:ffff:ffff,US
2a06:7280::,2a06:7287:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:72c0::,2a06:72c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:7300::,2a06:7307:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -39937,6 +40301,7 @@
2a06:8187:ffa0::,2a06:8187:ffaf:ffff:ffff:ffff:ffff:ffff,CA
2a06:8187:ffb0::,2a06:8187:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:81c0::,2a06:81c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a06:8240::,2a06:8247:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:8280::,2a06:8280:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:8281::,2a06:8281:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:8282::,2a06:8287:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -39944,6 +40309,7 @@
2a06:82c1::,2a06:82c1::ffff:ffff:ffff:ffff:ffff,US
2a06:82c2::,2a06:82c2:f:ffff:ffff:ffff:ffff:ffff,GB
2a06:82c3::,2a06:82c3::ffff:ffff:ffff:ffff:ffff,GB
+2a06:82c4::,2a06:82c4::ffff:ffff:ffff:ffff:ffff,GB
2a06:8300::,2a06:8307:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a06:8340::,2a06:8347:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:8380::,2a06:8387:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -39972,6 +40338,7 @@
2a06:8900::,2a06:8907:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a06:8940::,2a06:8947:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:8980::,2a06:8987:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:89c0::,2a06:89c0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:8a00::,2a06:8a07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:8a40::,2a06:8a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:8a80::,2a06:8a87:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -40129,6 +40496,7 @@
2a06:a800::,2a06:a807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a840::,2a06:a847:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:a880::,2a06:a887:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:a8c0::,2a06:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:a900::,2a06:a907:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:a940::,2a06:a947:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:a980::,2a06:a987:ffff:ffff:ffff:ffff:ffff:ffff,EE
@@ -40198,6 +40566,7 @@
2a06:b940::,2a06:b947:ffff:ffff:ffff:ffff:ffff:ffff,NG
2a06:b980::,2a06:b987:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:b9c0::,2a06:b9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a06:ba00::,2a06:ba07:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a06:ba40::,2a06:ba47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:ba80::,2a06:ba87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:bac0::,2a06:bac7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -40327,6 +40696,7 @@
2a06:d780::,2a06:d787:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:d7c0::,2a06:d7c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a06:d800::,2a06:d807:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a06:d840::,2a06:d847:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:d880::,2a06:d887:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a06:d8c0::,2a06:d8c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:d900::,2a06:d907:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40404,6 +40774,7 @@
2a06:e881:4001::,2a06:e881:4001:ffff:ffff:ffff:ffff:ffff,GB
2a06:e8c0::,2a06:e8c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a06:e900::,2a06:e907:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a06:e940::,2a06:e947:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:e9c0::,2a06:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:ea00::,2a06:ea07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:ea40::,2a06:ea47:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -40485,6 +40856,8 @@
2a06:fd40::,2a06:fd47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:fd80::,2a06:fd87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a06:fdc0::,2a06:fdc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:fe00::,2a06:fe07:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a06:fe40::,2a06:fe47:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a06:fe80::,2a06:fe87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:fec0::,2a06:fec7:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:ff00::,2a06:ff07:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -40612,7 +40985,8 @@
2a07:1b80::,2a07:1b87:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1bc0::,2a07:1bc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:1c00::,2a07:1c07:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a07:1c40::,2a07:1c40:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c40::,2a07:1c40::ffff:ffff:ffff:ffff:ffff,NL
+2a07:1c40:1::,2a07:1c40:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c41::,2a07:1c41:ff:ffff:ffff:ffff:ffff:ffff,NL
2a07:1c41:100::,2a07:1c41:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c42::,2a07:1c42::ffff:ffff:ffff:ffff:ffff,DE
@@ -40667,9 +41041,7 @@
2a07:1c47::,2a07:1c47:7ff:ffff:ffff:ffff:ffff:ffff,AQ
2a07:1c47:800::,2a07:1c47:c0ff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c47:c100::,2a07:1c47:c10f:ffff:ffff:ffff:ffff:ffff,DE
-2a07:1c47:c200::,2a07:1c47:eeff:ffff:ffff:ffff:ffff:ffff,AT
-2a07:1c47:ef00::,2a07:1c47:ef0f:ffff:ffff:ffff:ffff:ffff,GB
-2a07:1c47:ef10::,2a07:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c47:c200::,2a07:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c80::,2a07:1c87:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:1cc0::,2a07:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:1d00::,2a07:1d07:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -40730,6 +41102,7 @@
2a07:2b40::,2a07:2b47:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:2b80::,2a07:2b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:2bc0::,2a07:2bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:2c00::,2a07:2c07:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a07:2c40::,2a07:2c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2c80::,2a07:2c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:2cc0::,2a07:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -40767,6 +41140,7 @@
2a07:3300::,2a07:3307:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a07:3340::,2a07:3347:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3380::,2a07:3387:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:33c0::,2a07:33c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:3400::,2a07:3407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3440::,2a07:3447:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:3480::,2a07:3487:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40825,6 +41199,7 @@
2a07:4240::,2a07:4247:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:4280::,2a07:4287:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:42c0::,2a07:42c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:4300::,2a07:4307:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:4340::,2a07:4347:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a07:4380::,2a07:4387:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:43c0::,2a07:43c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -40840,6 +41215,7 @@
2a07:4600::,2a07:4607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:4640::,2a07:4647:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:4680::,2a07:4687:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:46c0::,2a07:46c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:4700::,2a07:4707:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:4740::,2a07:4747:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:4780::,2a07:4787:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -40860,6 +41236,8 @@
2a07:4b80::,2a07:4b87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:4bc0::,2a07:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:4c00::,2a07:4c07:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:4c40::,2a07:4c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:4c80::,2a07:4c87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:4cc0::,2a07:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:4d00::,2a07:4d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:4d40::,2a07:4d47:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -40904,6 +41282,7 @@
2a07:5740::,2a07:5747:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:5780::,2a07:5787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:57c0::,2a07:57c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:5800::,2a07:5807:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a07:5840::,2a07:5847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:5880::,2a07:5887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:58c0::,2a07:58c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -40935,13 +41314,16 @@
2a07:59c6:cb00::,2a07:59c6:cbff:ffff:ffff:ffff:ffff:ffff,IT
2a07:59c6:cc00::,2a07:59c6:ccff:ffff:ffff:ffff:ffff:ffff,DE
2a07:59c6:cd00::,2a07:59c6:cfff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:59c6:d000::,2a07:59c6:d003:ffff:ffff:ffff:ffff:ffff,DE
+2a07:59c6:d000::,2a07:59c6:d000:ffff:ffff:ffff:ffff:ffff,DE
+2a07:59c6:d001::,2a07:59c6:d001:ffff:ffff:ffff:ffff:ffff,SE
+2a07:59c6:d002::,2a07:59c6:d003:ffff:ffff:ffff:ffff:ffff,DE
2a07:59c6:d004::,2a07:59c6:d004:ffff:ffff:ffff:ffff:ffff,CH
2a07:59c6:d005::,2a07:59c6:dfff:ffff:ffff:ffff:ffff:ffff,DE
2a07:59c6:e000::,2a07:59c6:e7ff:ffff:ffff:ffff:ffff:ffff,CH
2a07:59c6:e800::,2a07:59c6:efff:ffff:ffff:ffff:ffff:ffff,DE
2a07:59c6:f000::,2a07:59c7:7fff:ffff:ffff:ffff:ffff:ffff,IT
2a07:59c7:a000::,2a07:59c7:dfff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:5a00::,2a07:5a07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:5a40::,2a07:5a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:5a80::,2a07:5a87:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a07:5ac0::,2a07:5ac7:ffff:ffff:ffff:ffff:ffff:ffff,HR
@@ -40963,6 +41345,7 @@
2a07:5f00::,2a07:5f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:5f40::,2a07:5f47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:5f80::,2a07:5f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:5fc0::,2a07:5fc0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:6000::,2a07:6007:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:6040::,2a07:6047:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a07:6080::,2a07:6087:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -40996,6 +41379,7 @@
2a07:6780::,2a07:6787:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a07:67c0::,2a07:67c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:6800::,2a07:6807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:6840::,2a07:6847:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:6880::,2a07:6887:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:68c1::,2a07:68c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:6900::,2a07:6900::ffff:ffff:ffff:ffff:ffff,UA
@@ -41023,6 +41407,7 @@
2a07:6e80::,2a07:6e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:6ec0::,2a07:6ec7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:6f00::,2a07:6f07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:6f40::,2a07:6f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:6f80::,2a07:6f87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:6fc0::,2a07:6fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:7000::,2a07:7007:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -41053,6 +41438,7 @@
2a07:7600::,2a07:7607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:7640::,2a07:7647:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:7680::,2a07:7687:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:76c0::,2a07:76c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:7740::,2a07:7747:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7780::,2a07:7787:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:77c0::,2a07:77c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -41067,6 +41453,7 @@
2a07:7940:ffff::,2a07:7940:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:7941::,2a07:7947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:7980::,2a07:7987:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:79c0::,2a07:79c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:7a00::,2a07:7a07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:7a40::,2a07:7a47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7a80::,2a07:7a87:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -41075,6 +41462,7 @@
2a07:7b40::,2a07:7b47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7b80::,2a07:7b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:7bc0::,2a07:7bc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:7c00::,2a07:7c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:7c40::,2a07:7c47:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a07:7c80::,2a07:7c87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:7cc0::,2a07:7cc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -41195,6 +41583,7 @@
2a07:9300::,2a07:9307:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:9340::,2a07:9347:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:93c0::,2a07:93c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:9400::,2a07:9407:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:9440::,2a07:9447:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:9480::,2a07:9487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:94c0::,2a07:94c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -41238,6 +41627,7 @@
2a07:9c00::,2a07:9c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:9c40::,2a07:9c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:9c80::,2a07:9c87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:9cc0::,2a07:9cc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:9d00::,2a07:9d07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:9d40::,2a07:9d47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:9d80::,2a07:9d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -41397,6 +41787,7 @@
2a07:b480::,2a07:b487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:b4c0::,2a07:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:b500::,2a07:b507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:b540::,2a07:b547:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:b580::,2a07:b587:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:b5c0::,2a07:b5c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:b600::,2a07:b607:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -41597,6 +41988,7 @@
2a07:eec0::,2a07:eec7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:ef00::,2a07:ef07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:ef40::,2a07:ef47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:ef80::,2a07:ef87:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a07:efc0::,2a07:efc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:f000::,2a07:f007:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f080::,2a07:f087:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -41663,72 +42055,139 @@
2a07:ffc0::,2a07:ffc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a08::,2a08:1fff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09::,2a09:7:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a09:40::,2a09:47:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:80::,2a09:87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:c0::,2a09:c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:100::,2a09:100:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a09:140::,2a09:147:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:180::,2a09:180:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1c0::,2a09:1c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:200::,2a09:207:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:240::,2a09:247:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:280::,2a09:287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:2c0::,2a09:2c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:300::,2a09:307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a09:340::,2a09:347:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:380::,2a09:387:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a09:3c0::,2a09:3c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:400::,2a09:407:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:440::,2a09:447:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:480::,2a09:487:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a09:4c0::,2a09:4c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a09:500::,2a09:507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a09:540::,2a09:547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:580::,2a09:587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:5c0::,2a09:5c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a09:600::,2a09:607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:640::,2a09:647:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:680::,2a09:687:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:6c0::,2a09:6c7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a09:700::,2a09:707:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a09:740::,2a09:740:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a09:780::,2a09:787:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a09:7c0::,2a09:7c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a09:800::,2a09:807:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a09:840::,2a09:840:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a09:880::,2a09:887:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a09:8c0::,2a09:8c7:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a09:900::,2a09:907:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a09:940::,2a09:947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a09:980::,2a09:987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:9c0::,2a09:9c7:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a09:a00::,2a09:a07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a09:a40::,2a09:a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a09:a80::,2a09:a87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:ac0::,2a09:ac7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a09:b00::,2a09:b07:ffff:ffff:ffff:ffff:ffff:ffff,LV
+2a09:b40::,2a09:b47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a09:b80::,2a09:b87:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a09:bc0::,2a09:bc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a09:c00::,2a09:c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:c40::,2a09:c47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a09:c80::,2a09:c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:cc0::,2a09:cc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:d00::,2a09:d07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a09:d40::,2a09:d47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a09:d80::,2a09:d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:dc0::,2a09:dc0:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a09:e00::,2a09:e07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:e40::,2a09:e40:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:e80::,2a09:e87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a09:ec0::,2a09:ec7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a09:f00::,2a09:f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a09:f40::,2a09:f47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a09:f80::,2a09:f87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:fc0::,2a09:fc7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a09:1000::,2a09:1007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:1040::,2a09:1047:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a09:1080::,2a09:1087:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:10c0::,2a09:10c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a09:1100::,2a09:1107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1140::,2a09:1147:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:1180::,2a09:1187:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a09:11c0::,2a09:11c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a09:1200::,2a09:1207:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1240::,2a09:1247:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:1280::,2a09:1287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:12c0::,2a09:12c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a09:1300::,2a09:1307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a09:1340::,2a09:1347:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a09:1380::,2a09:1387:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a09:13c0::,2a09:13c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a09:1400::,2a09:1407:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a09:1440::,2a09:1447:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a09:1480::,2a09:1487:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:14c0::,2a09:14c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a09:1500::,2a09:1507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:1540::,2a09:1540:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a09:1580::,2a09:1587:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a09:15c0::,2a09:15c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a09:1600::,2a09:1607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1640::,2a09:1640:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:1680::,2a09:1687:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a09:16c0::,2a09:16c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a09:1700::,2a09:1707:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a09:1740::,2a09:1747:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:1780::,2a09:1787:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a09:17c0::,2a09:17c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:1800::,2a09:1807:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1840::,2a09:1840:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:1880::,2a09:1887:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a09:18c0::,2a09:18c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:1900::,2a09:1907:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a09:1940::,2a09:1947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a09:1980::,2a09:1987:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a09:19c0::,2a09:19c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:1a00::,2a09:1a07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1a40::,2a09:1a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a09:1a80::,2a09:1a87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a09:1ac0::,2a09:1ac7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a09:1b00::,2a09:1b07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a09:1b40::,2a09:1b40:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a09:1b80::,2a09:1b87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a09:1bc0::,2a09:1bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a09:1c00::,2a09:1c07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:1c40::,2a09:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a09:1c80::,2a09:1c87:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a09:1cc0::,2a09:1cc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a09:1d00::,2a09:1d07:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a09:1d40::,2a09:1d47:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a09:1d80::,2a09:1d87:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a09:1dc0::,2a09:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:1e00::,2a09:1e07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:1e40::,2a09:1e47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a09:1e80::,2a09:1e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a09:1ec0::,2a09:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a09:1f00::,2a09:1f07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a09:1f40::,2a09:1f47:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a09:1f80::,2a09:1f87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a09:1fc0::,2a09:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a09:2000::,2a09:2007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a09:2040::,2a09:2047:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a09:2080::,2a09:2087:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a09:20c0::,2a09:20c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a09:2100::,2a09:2107:ffff:ffff:ffff:ffff:ffff:ffff,SM
+2a09:2140::,2a09:2147:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a09:2180::,2a09:2187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a09:2200::,2a09:2207:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a09:2280::,2a09:2287:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -41926,7 +42385,8 @@
2a09:8200::,2a09:8207:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a09:8280::,2a09:8287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:8300::,2a09:8307:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a09:8380::,2a09:8387:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a09:8380::,2a09:8380::ffff:ffff:ffff:ffff:ffff,RU
+2a09:8380:1::,2a09:8387:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:8400::,2a09:8407:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a09:8480::,2a09:8487:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a09:8500::,2a09:8507:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -42333,7 +42793,6 @@
2a0a:2580::,2a0a:2587:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:25c0::,2a0a:25c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0a:2600::,2a0a:2607:ffff:ffff:ffff:ffff:ffff:ffff,IS
-2a0a:2640::,2a0a:2647:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:2680::,2a0a:2687:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:26c0::,2a0a:26c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:2700::,2a0a:2707:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -42422,7 +42881,6 @@
2a0a:3540::,2a0a:3547:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:3580::,2a0a:3587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:35c0::,2a0a:35c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a0a:3600::,2a0a:3607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:3640::,2a0a:3647:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:3680::,2a0a:3687:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a0a:36c0::,2a0a:36c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -42500,7 +42958,6 @@
2a0a:48c0::,2a0a:48c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0a:4900::,2a0a:4907:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:4940::,2a0a:4947:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a0a:4980::,2a0a:4987:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:49c0::,2a0a:49c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:4a40::,2a0a:4a47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:4a80::,2a0a:4a87:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -42744,7 +43201,6 @@
2a0a:84c0::,2a0a:84c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8500::,2a0a:8507:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8540::,2a0a:8547:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0a:8580::,2a0a:8587:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:85c0::,2a0a:85c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:8600::,2a0a:8604:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:8605::,2a0a:8605::ffff:ffff:ffff:ffff:ffff,US
@@ -42955,9 +43411,8 @@
2a0a:b580::,2a0a:b587:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:b5c0::,2a0a:b5c7:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a0a:b600::,2a0a:b607:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a0a:b640::,2a0a:b640::ffff:ffff:ffff:ffff:ffff,GB
-2a0a:b640:1::,2a0a:b640:1:ffff:ffff:ffff:ffff:ffff,SG
-2a0a:b640:2::,2a0a:b647:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0a:b640::,2a0a:b640:3ff:ffff:ffff:ffff:ffff:ffff,SG
+2a0a:b640:400::,2a0a:b647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:b680::,2a0a:b687:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:b6c0::,2a0a:b6c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:b706::,2a0a:b707::ffff:ffff:ffff:ffff:ffff,GB
@@ -42984,8 +43439,7 @@
2a0a:ba80::,2a0a:ba87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:bac0::,2a0a:bac7:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a0a:bb00::,2a0a:bb07:ffff:ffff:ffff:ffff:ffff:ffff,LI
-2a0a:bb40::,2a0a:bb40:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0a:bb41::,2a0a:bb47:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:bb40::,2a0a:bb47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:bb80::,2a0a:bb87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:bbc0::,2a0a:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:bc40::,2a0a:bc40:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -43015,7 +43469,6 @@
2a0a:c2c0::,2a0a:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:c300::,2a0a:c307:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:c340::,2a0a:c340:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a0a:c380::,2a0a:c387:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:c400::,2a0a:c407:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:c440::,2a0a:c447:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:c480::,2a0a:c487:ffff:ffff:ffff:ffff:ffff:ffff,SA
@@ -43033,8 +43486,8 @@
2a0a:c7c0::,2a0a:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:c800::,2a0a:c800:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0a:c801::,2a0a:c801:ffff:ffff:ffff:ffff:ffff:ffff,MD
-2a0a:c802::,2a0a:c802::ffff:ffff:ffff:ffff:ffff,US
-2a0a:c802:1::,2a0a:c807:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0a:c802::,2a0a:c802:1:ffff:ffff:ffff:ffff:ffff,US
+2a0a:c802:2::,2a0a:c807:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0a:c840::,2a0a:c847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:c880::,2a0a:c880:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:c8c0::,2a0a:c8c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -43327,6 +43780,7 @@
2a0b:e42::,2a0b:e42:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:e43::,2a0b:e43:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:e44::,2a0b:e44:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:e45::,2a0b:e45:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0b:e80::,2a0b:e87:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0b:ec0::,2a0b:ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f00::,2a0b:f07:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -44330,7 +44784,9 @@
2a0b:f400::,2a0b:f400:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f440::,2a0b:f447:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f480::,2a0b:f480:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a0b:f4c0::,2a0b:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:f4c0::,2a0b:f4c1::ffff:ffff:ffff:ffff:ffff,DE
+2a0b:f4c1:1::,2a0b:f4c1:1:ffff:ffff:ffff:ffff:ffff,GB
+2a0b:f4c1:2::,2a0b:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f500::,2a0b:f507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0b:f540::,2a0b:f547:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:f580::,2a0b:f587:ffff:ffff:ffff:ffff:ffff:ffff,GE
@@ -44344,7 +44800,7 @@
2a0b:f780::,2a0b:f787:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:f7c0::,2a0b:f7c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:f800::,2a0b:f807:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a0b:f840::,2a0b:f840:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0b:f840::,2a0b:f847:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f880::,2a0b:f887:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:f8c0::,2a0b:f8c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:f900::,2a0b:f907:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -44608,7 +45064,6 @@
2a0c:3800::,2a0c:3800:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:3840::,2a0c:3847:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a0c:3880::,2a0c:3887:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a0c:38c0::,2a0c:38c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3900::,2a0c:3907:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:3940::,2a0c:3947:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0c:3980::,2a0c:3987:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -45099,7 +45554,6 @@
2a0c:a780::,2a0c:a781:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:a7c0::,2a0c:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:a800::,2a0c:a807:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a0c:a840::,2a0c:a847:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:a880::,2a0c:a887:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:a8c0::,2a0c:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:a900::,2a0c:a900:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -45171,10 +45625,15 @@
2a0c:b641:90::,2a0c:b641:ff:ffff:ffff:ffff:ffff:ffff,BE
2a0c:b641:100::,2a0c:b641:1ff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:b641:200::,2a0c:b641:200:ffff:ffff:ffff:ffff:ffff,FR
-2a0c:b641:202::,2a0c:b641:20f:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:b641:201::,2a0c:b641:201:ffff:ffff:ffff:ffff:ffff,JP
+2a0c:b641:202::,2a0c:b641:209:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:b641:20b::,2a0c:b641:20e:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:b641:20f::,2a0c:b641:20f:ffff:ffff:ffff:ffff:ffff,GB
2a0c:b641:210::,2a0c:b641:21f:ffff:ffff:ffff:ffff:ffff,DE
2a0c:b641:220::,2a0c:b641:220:ffff:ffff:ffff:ffff:ffff,NL
-2a0c:b641:230::,2a0c:b641:23f:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:b641:230::,2a0c:b641:230:ffff:ffff:ffff:ffff:ffff,JP
+2a0c:b641:231::,2a0c:b641:231:ffff:ffff:ffff:ffff:ffff,HK
+2a0c:b641:232::,2a0c:b641:23f:ffff:ffff:ffff:ffff:ffff,GB
2a0c:b641:240::,2a0c:b641:241:ffff:ffff:ffff:ffff:ffff,JP
2a0c:b641:242::,2a0c:b641:242:ffff:ffff:ffff:ffff:ffff,US
2a0c:b641:243::,2a0c:b641:243:ffff:ffff:ffff:ffff:ffff,FR
@@ -45182,7 +45641,16 @@
2a0c:b641:250::,2a0c:b641:260:ffff:ffff:ffff:ffff:ffff,RU
2a0c:b641:261::,2a0c:b641:261:ffff:ffff:ffff:ffff:ffff,JP
2a0c:b641:270::,2a0c:b641:27f:ffff:ffff:ffff:ffff:ffff,CH
-2a0c:b641:290::,2a0c:b641:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:b641:290::,2a0c:b641:29f:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:b641:2a0::,2a0c:b641:2ff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:b641:310::,2a0c:b641:3ff:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:b641:400::,2a0c:b641:4ff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:b641:500::,2a0c:b641:50f:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:b641:510::,2a0c:b641:51f:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:b641:520::,2a0c:b641:52f:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:b641:530::,2a0c:b641:53f:ffff:ffff:ffff:ffff:ffff,BE
+2a0c:b641:540::,2a0c:b641:54f:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:b641:550::,2a0c:b641:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0c:b642::,2a0c:b642:fff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:b642:1000::,2a0c:b642:1002:ffff:ffff:ffff:ffff:ffff,DE
2a0c:b642:1003::,2a0c:b642:1003:ffff:ffff:ffff:ffff:ffff,US
@@ -45608,7 +46076,9 @@
2a0d:1a40:9410::,2a0d:1a40:941f:ffff:ffff:ffff:ffff:ffff,GB
2a0d:1a40:babe::,2a0d:1a40:babe:ffff:ffff:ffff:ffff:ffff,SG
2a0d:1a40:beef::,2a0d:1a40:beef:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:1a40:ca15::,2a0d:1a40:ca15:ffff:ffff:ffff:ffff:ffff,BE
2a0d:1a41:6969::,2a0d:1a41:6969:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:1a44::,2a0d:1a44:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:1a45:beef::,2a0d:1a45:beef:ffff:ffff:ffff:ffff:ffff,SE
2a0d:1a45:dead::,2a0d:1a45:dead:ffff:ffff:ffff:ffff:ffff,SE
2a0d:1a80::,2a0d:1a87:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -45646,8 +46116,7 @@
2a0d:2144:a7::,2a0d:2144:f1:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2144:f2::,2a0d:2144:f2:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2144:f3::,2a0d:2144:f3:ffff:ffff:ffff:ffff:ffff,GB
-2a0d:2144:f4::,2a0d:2146:800f:ffff:ffff:ffff:ffff:ffff,DE
-2a0d:2146:8010::,2a0d:2146:8010:ffff:ffff:ffff:ffff:ffff,RO
+2a0d:2144:f4::,2a0d:2146:8010:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2146:8011::,2a0d:2146:8011:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2146:8012::,2a0d:2146:803f:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2146:8040::,2a0d:2146:8040:ffff:ffff:ffff:ffff:ffff,US
@@ -45684,8 +46153,13 @@
2a0d:2406:e1e::,2a0d:2406:e1e:ffff:ffff:ffff:ffff:ffff,AQ
2a0d:2406:e1f::,2a0d:2406:e1f:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2406:e20::,2a0d:2406:eff:ffff:ffff:ffff:ffff:ffff,NL
-2a0d:2406:f00::,2a0d:2406:f0f:ffff:ffff:ffff:ffff:ffff,GB
-2a0d:2406:f10::,2a0d:2407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:2406:f00::,2a0d:2406:fff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:2406:1000::,2a0d:2406:1000:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:2406:1004::,2a0d:2406:1004:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:2406:1005::,2a0d:2406:1005:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:2406:100a::,2a0d:2406:100a:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:2406:100c::,2a0d:2406:100c:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:2406:1010::,2a0d:2407:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2440::,2a0d:2447:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:2480::,2a0d:2487:ffff:ffff:ffff:ffff:ffff:ffff,CN
2a0d:24c0::,2a0d:24c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -45900,17 +46374,22 @@
2a0d:5540::,2a0d:5547:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:5580::,2a0d:5587:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:55c0::,2a0d:55c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0d:5600::,2a0d:5600:8:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600::,2a0d:5600::ffff:ffff:ffff:ffff:ffff,JP
+2a0d:5600:1::,2a0d:5600:8:ffff:ffff:ffff:ffff:ffff,US
2a0d:5600:9::,2a0d:5600:9:ffff:ffff:ffff:ffff:ffff,CA
2a0d:5600:a::,2a0d:5600:c:ffff:ffff:ffff:ffff:ffff,US
2a0d:5600:d::,2a0d:5600:d:ffff:ffff:ffff:ffff:ffff,SG
-2a0d:5600:e::,2a0d:5600:f:ffff:ffff:ffff:ffff:ffff,JP
-2a0d:5600:10::,2a0d:5600:10:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:e::,2a0d:5600:10:ffff:ffff:ffff:ffff:ffff,JP
2a0d:5600:11::,2a0d:5600:12:ffff:ffff:ffff:ffff:ffff,SK
2a0d:5600:13::,2a0d:5600:13:ffff:ffff:ffff:ffff:ffff,PL
-2a0d:5600:14::,2a0d:5600:15:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:14::,2a0d:5600:15:ffff:ffff:ffff:ffff:ffff,JP
2a0d:5600:16::,2a0d:5600:16:ffff:ffff:ffff:ffff:ffff,PL
-2a0d:5600:17::,2a0d:5600:a31:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:17::,2a0d:5600:17:ffff:ffff:ffff:ffff:ffff,JP
+2a0d:5600:18::,2a0d:5600:18:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:19::,2a0d:5600:23:ffff:ffff:ffff:ffff:ffff,JP
+2a0d:5600:24::,2a0d:5600:25:ffff:ffff:ffff:ffff:ffff,US
+2a0d:5600:26::,2a0d:5600:3ff:ffff:ffff:ffff:ffff:ffff,JP
+2a0d:5600:400::,2a0d:5600:a31:ffff:ffff:ffff:ffff:ffff,US
2a0d:5600:a32::,2a0d:5600:a32:ffff:ffff:ffff:ffff:ffff,IT
2a0d:5600:a33::,2a0d:5607:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0d:5680::,2a0d:5687:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -46244,7 +46723,8 @@
2a0d:a440::,2a0d:a447:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0d:a480::,2a0d:a487:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0d:a4c0:3a00::,2a0d:a4c0:3a0f:ffff:ffff:ffff:ffff:ffff,AT
-2a0d:a4c2::,2a0d:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:a4c2::,2a0d:a4c2:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:a4c4::,2a0d:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:a500::,2a0d:a507:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0d:a540::,2a0d:a547:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:a580::,2a0d:a587:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -46382,7 +46862,6 @@
2a0d:c6c0::,2a0d:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a0d:c700::,2a0d:c707:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:c780::,2a0d:c787:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0d:c7c0::,2a0d:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:c800::,2a0d:c807:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:c840::,2a0d:c847:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0d:c880::,2a0d:c887:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -46628,6 +47107,8 @@
2c0f:ec80::,2c0f:ec80:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:ec88::,2c0f:ec88:ffff:ffff:ffff:ffff:ffff:ffff,ZM
2c0f:ec90::,2c0f:ec90:ffff:ffff:ffff:ffff:ffff:ffff,TN
+2c0f:ec98::,2c0f:ec98:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:eca0::,2c0f:eca0:ffff:ffff:ffff:ffff:ffff:ffff,CD
2c0f:ee00::,2c0f:ee00:ffff:ffff:ffff:ffff:ffff:ffff,BF
2c0f:ee08::,2c0f:ee08:ffff:ffff:ffff:ffff:ffff:ffff,CD
2c0f:ee10::,2c0f:ee10:ffff:ffff:ffff:ffff:ffff:ffff,GH
diff --git a/src/core/crypto/hs_ntor.c b/src/core/crypto/hs_ntor.c
index d98d16f7f6..c34073690e 100644
--- a/src/core/crypto/hs_ntor.c
+++ b/src/core/crypto/hs_ntor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** \file hs_ntor.c
diff --git a/src/core/crypto/hs_ntor.h b/src/core/crypto/hs_ntor.h
index 30738c4ae0..e5a5171915 100644
--- a/src/core/crypto/hs_ntor.h
+++ b/src/core/crypto/hs_ntor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_HS_NTOR_H
diff --git a/src/core/crypto/onion_crypto.c b/src/core/crypto/onion_crypto.c
index 4978e0d46c..56b02e2996 100644
--- a/src/core/crypto/onion_crypto.c
+++ b/src/core/crypto/onion_crypto.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_crypto.h b/src/core/crypto/onion_crypto.h
index ed410ef252..1cddde3610 100644
--- a/src/core/crypto/onion_crypto.h
+++ b/src/core/crypto/onion_crypto.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_fast.c b/src/core/crypto/onion_fast.c
index 292aeca402..31bd20235f 100644
--- a/src/core/crypto/onion_fast.c
+++ b/src/core/crypto/onion_fast.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_fast.h b/src/core/crypto/onion_fast.h
index a7b6ec53f4..0ba8cbbc35 100644
--- a/src/core/crypto/onion_fast.h
+++ b/src/core/crypto/onion_fast.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_ntor.c b/src/core/crypto/onion_ntor.c
index 3614e0c9b1..7087fe1bd7 100644
--- a/src/core/crypto/onion_ntor.c
+++ b/src/core/crypto/onion_ntor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_ntor.h b/src/core/crypto/onion_ntor.h
index 0ba4abe49e..51e72b4083 100644
--- a/src/core/crypto/onion_ntor.h
+++ b/src/core/crypto/onion_ntor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ONION_NTOR_H
diff --git a/src/core/crypto/onion_tap.c b/src/core/crypto/onion_tap.c
index 7ffe0ea5c5..854889d88d 100644
--- a/src/core/crypto/onion_tap.c
+++ b/src/core/crypto/onion_tap.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/onion_tap.h b/src/core/crypto/onion_tap.h
index 9a3df684d6..0e43b9c8ba 100644
--- a/src/core/crypto/onion_tap.h
+++ b/src/core/crypto/onion_tap.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/crypto/relay_crypto.c b/src/core/crypto/relay_crypto.c
index 311160a669..0b83b2d0a5 100644
--- a/src/core/crypto/relay_crypto.c
+++ b/src/core/crypto/relay_crypto.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/crypto/relay_crypto.h b/src/core/crypto/relay_crypto.h
index 67da93344f..45a21d14ab 100644
--- a/src/core/crypto/relay_crypto.h
+++ b/src/core/crypto/relay_crypto.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/include.am b/src/core/include.am
index 5e69cb9ada..ae47c75e09 100644
--- a/src/core/include.am
+++ b/src/core/include.am
@@ -32,6 +32,7 @@ LIBTOR_APP_A_SOURCES = \
src/core/or/circuitlist.c \
src/core/or/circuitmux.c \
src/core/or/circuitmux_ewma.c \
+ src/core/or/circuitpadding.c \
src/core/or/circuitstats.c \
src/core/or/circuituse.c \
src/core/or/command.c \
@@ -227,6 +228,7 @@ noinst_HEADERS += \
src/core/or/circuitmux.h \
src/core/or/circuitmux_ewma.h \
src/core/or/circuitstats.h \
+ src/core/or/circuitpadding.h \
src/core/or/circuituse.h \
src/core/or/command.h \
src/core/or/connection_edge.h \
diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c
index 6cc6122702..b53552a53d 100644
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -4341,6 +4341,23 @@ connection_write_to_buf_impl_,(const char *string, size_t len,
connection_write_to_buf_commit(conn, written);
}
+/**
+ * Write a <b>string</b> (of size <b>len</b> to directory connection
+ * <b>dir_conn</b>. Apply compression if connection is configured to use
+ * it and finalize it if <b>done</b> is true.
+ */
+void
+connection_dir_buf_add(const char *string, size_t len,
+ dir_connection_t *dir_conn, int done)
+{
+ if (dir_conn->compress_state != NULL) {
+ connection_buf_add_compress(string, len, dir_conn, done);
+ return;
+ }
+
+ connection_buf_add(string, len, TO_CONN(dir_conn));
+}
+
void
connection_buf_add_compress(const char *string, size_t len,
dir_connection_t *conn, int done)
diff --git a/src/core/mainloop/connection.h b/src/core/mainloop/connection.h
index 07b8df4138..de6473251d 100644
--- a/src/core/mainloop/connection.h
+++ b/src/core/mainloop/connection.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -226,6 +226,8 @@ MOCK_DECL(void, connection_write_to_buf_impl_,
/* DOCDOC connection_write_to_buf */
static void connection_buf_add(const char *string, size_t len,
connection_t *conn);
+void connection_dir_buf_add(const char *string, size_t len,
+ dir_connection_t *dir_conn, int done);
static inline void
connection_buf_add(const char *string, size_t len, connection_t *conn)
{
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 8d0d23ab91..e704d55642 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/mainloop/cpuworker.h b/src/core/mainloop/cpuworker.h
index 50812b2dab..77e2c42508 100644
--- a/src/core/mainloop/cpuworker.h
+++ b/src/core/mainloop/cpuworker.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c
index ca0fefca71..18e87fa87a 100644
--- a/src/core/mainloop/mainloop.c
+++ b/src/core/mainloop/mainloop.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/mainloop/mainloop.h b/src/core/mainloop/mainloop.h
index 730234857d..6ed93fa900 100644
--- a/src/core/mainloop/mainloop.h
+++ b/src/core/mainloop/mainloop.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/mainloop/netstatus.c b/src/core/mainloop/netstatus.c
index d1989cb839..fc5a465ff7 100644
--- a/src/core/mainloop/netstatus.c
+++ b/src/core/mainloop/netstatus.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/mainloop/netstatus.h b/src/core/mainloop/netstatus.h
index 9a0fa410fd..aba631e2fb 100644
--- a/src/core/mainloop/netstatus.h
+++ b/src/core/mainloop/netstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_NETSTATUS_H
diff --git a/src/core/mainloop/periodic.c b/src/core/mainloop/periodic.c
index 9f9b178e43..c0363b15ea 100644
--- a/src/core/mainloop/periodic.c
+++ b/src/core/mainloop/periodic.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/mainloop/periodic.h b/src/core/mainloop/periodic.h
index 05ba4297f3..344fc9ad25 100644
--- a/src/core/mainloop/periodic.h
+++ b/src/core/mainloop/periodic.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PERIODIC_H
diff --git a/src/core/or/addr_policy_st.h b/src/core/or/addr_policy_st.h
index 222a067252..a75f1a731d 100644
--- a/src/core/or/addr_policy_st.h
+++ b/src/core/or/addr_policy_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ADDR_POLICY_ST_H
diff --git a/src/core/or/address_set.c b/src/core/or/address_set.c
index 014e650d2d..758fba4aac 100644
--- a/src/core/or/address_set.c
+++ b/src/core/or/address_set.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/address_set.h b/src/core/or/address_set.h
index 2efa1cb03b..7a9e71628e 100644
--- a/src/core/or/address_set.h
+++ b/src/core/or/address_set.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/cell_queue_st.h b/src/core/or/cell_queue_st.h
index 40110019bc..130b95a011 100644
--- a/src/core/or/cell_queue_st.h
+++ b/src/core/or/cell_queue_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef PACKED_CELL_ST_H
diff --git a/src/core/or/cell_st.h b/src/core/or/cell_st.h
index 6728e783b9..7ab7eceb50 100644
--- a/src/core/or/cell_st.h
+++ b/src/core/or/cell_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CELL_ST_H
diff --git a/src/core/or/channel.c b/src/core/or/channel.c
index 2af0e5944f..fd7bf62789 100644
--- a/src/core/or/channel.c
+++ b/src/core/or/channel.c
@@ -1,5 +1,5 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/channel.h b/src/core/or/channel.h
index b3d97a9add..97aa000337 100644
--- a/src/core/or/channel.h
+++ b/src/core/or/channel.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/channelpadding.c b/src/core/or/channelpadding.c
index fcc3b8f03d..4a0f0e00da 100644
--- a/src/core/or/channelpadding.c
+++ b/src/core/or/channelpadding.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* TOR_CHANNEL_INTERNAL_ define needed for an O(1) implementation of
diff --git a/src/core/or/channelpadding.h b/src/core/or/channelpadding.h
index 7f8cfd4cc7..48002eedb7 100644
--- a/src/core/or/channelpadding.h
+++ b/src/core/or/channelpadding.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/channeltls.c b/src/core/or/channeltls.c
index cf33feec01..f552b20770 100644
--- a/src/core/or/channeltls.c
+++ b/src/core/or/channeltls.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/channeltls.h b/src/core/or/channeltls.h
index 2ec7fe5453..634a2a00e9 100644
--- a/src/core/or/channeltls.h
+++ b/src/core/or/channeltls.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuit_st.h b/src/core/or/circuit_st.h
index 2e33b37b01..af343f082e 100644
--- a/src/core/or/circuit_st.h
+++ b/src/core/or/circuit_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CIRCUIT_ST_H
@@ -12,6 +12,11 @@
#include "core/or/cell_queue_st.h"
struct hs_token_t;
+struct circpad_machine_spec_t;
+struct circpad_machine_state_t;
+
+/** Number of padding state machines on a circuit. */
+#define CIRCPAD_MAX_MACHINES (2)
/** "magic" value for an origin_circuit_t */
#define ORIGIN_CIRCUIT_MAGIC 0x35315243u
@@ -177,6 +182,27 @@ struct circuit_t {
/** Hashtable node: used to look up the circuit by its HS token using the HS
circuitmap. */
HT_ENTRY(circuit_t) hs_circuitmap_node;
+
+ /** Adaptive Padding state machines: these are immutable. The state machines
+ * that come from the consensus are saved to a global structure, to avoid
+ * per-circuit allocations. This merely points to the global copy in
+ * origin_padding_machines or relay_padding_machines that should never
+ * change or get deallocated.
+ *
+ * Each element of this array corresponds to a different padding machine,
+ * and we can have up to CIRCPAD_MAX_MACHINES such machines. */
+ const struct circpad_machine_spec_t *padding_machine[CIRCPAD_MAX_MACHINES];
+
+ /** Adaptive Padding machine info for above machines. This is the
+ * per-circuit mutable information, such as the current state and
+ * histogram token counts. Some of it is optional (aka NULL).
+ * If a machine is being shut down, these indexes can be NULL
+ * without the corresponding padding_machine being NULL, while we
+ * wait for the other end to respond to our shutdown request.
+ *
+ * Each element of this array corresponds to a different padding machine,
+ * and we can have up to CIRCPAD_MAX_MACHINES such machines. */
+ struct circpad_machine_state_t *padding_info[CIRCPAD_MAX_MACHINES];
};
#endif
diff --git a/src/core/or/circuitbuild.c b/src/core/or/circuitbuild.c
index b89ec09a99..3ec1e01f11 100644
--- a/src/core/or/circuitbuild.c
+++ b/src/core/or/circuitbuild.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,6 +43,7 @@
#include "core/or/circuitlist.h"
#include "core/or/circuitstats.h"
#include "core/or/circuituse.h"
+#include "core/or/circuitpadding.h"
#include "core/or/command.h"
#include "core/or/connection_edge.h"
#include "core/or/connection_or.h"
@@ -950,12 +951,15 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
crypt_path_t *hop = onion_next_hop_in_cpath(circ->cpath);
circuit_build_times_handle_completed_hop(circ);
+ circpad_machine_event_circ_added_hop(circ);
+
if (hop) {
/* Case two: we're on a hop after the first. */
return circuit_send_intermediate_onion_skin(circ, hop);
}
/* Case three: the circuit is finished. Do housekeeping tasks on it. */
+ circpad_machine_event_circ_built(circ);
return circuit_build_no_more_hops(circ);
}
@@ -2606,7 +2610,24 @@ choose_good_middle_server(uint8_t purpose,
return choice;
}
- choice = router_choose_random_node(excluded, options->ExcludeNodes, flags);
+ if (options->MiddleNodes) {
+ smartlist_t *sl = smartlist_new();
+ routerset_get_all_nodes(sl, options->MiddleNodes,
+ options->ExcludeNodes, 1);
+
+ smartlist_subtract(sl, excluded);
+
+ choice = node_sl_choose_by_bandwidth(sl, WEIGHT_FOR_MID);
+ smartlist_free(sl);
+ if (choice) {
+ log_fn(LOG_INFO, LD_CIRC, "Chose fixed middle node: %s",
+ hex_str(choice->identity, DIGEST_LEN));
+ } else {
+ log_fn(LOG_NOTICE, LD_CIRC, "Restricted middle not available");
+ }
+ } else {
+ choice = router_choose_random_node(excluded, options->ExcludeNodes, flags);
+ }
smartlist_free(excluded);
return choice;
}
diff --git a/src/core/or/circuitbuild.h b/src/core/or/circuitbuild.h
index 93f903f060..b19bc41235 100644
--- a/src/core/or/circuitbuild.h
+++ b/src/core/or/circuitbuild.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitlist.c b/src/core/or/circuitlist.c
index c4b5f7ee3e..6b5f30e418 100644
--- a/src/core/or/circuitlist.c
+++ b/src/core/or/circuitlist.c
@@ -1,7 +1,7 @@
/* Copyright 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -62,6 +62,7 @@
#include "core/or/circuitlist.h"
#include "core/or/circuituse.h"
#include "core/or/circuitstats.h"
+#include "core/or/circuitpadding.h"
#include "core/mainloop/connection.h"
#include "app/config/config.h"
#include "core/or/connection_edge.h"
@@ -1231,6 +1232,9 @@ circuit_free_(circuit_t *circ)
CIRCUIT_IS_ORIGIN(circ) ?
TO_ORIGIN_CIRCUIT(circ)->global_identifier : 0);
+ /* Free any circuit padding structures */
+ circpad_circuit_free_all_machineinfos(circ);
+
if (should_free) {
memwipe(mem, 0xAA, memlen); /* poison memory */
tor_free(mem);
diff --git a/src/core/or/circuitlist.h b/src/core/or/circuitlist.h
index 37d37a089d..f34f4ed6b7 100644
--- a/src/core/or/circuitlist.h
+++ b/src/core/or/circuitlist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitmux.c b/src/core/or/circuitmux.c
index f55386df23..88f9ac7923 100644
--- a/src/core/or/circuitmux.c
+++ b/src/core/or/circuitmux.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitmux.h b/src/core/or/circuitmux.h
index 31bf81463b..67cd9bcdd8 100644
--- a/src/core/or/circuitmux.h
+++ b/src/core/or/circuitmux.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitmux_ewma.c b/src/core/or/circuitmux_ewma.c
index deca81f0ac..3f83c3fd5a 100644
--- a/src/core/or/circuitmux_ewma.c
+++ b/src/core/or/circuitmux_ewma.c
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitmux_ewma.h b/src/core/or/circuitmux_ewma.h
index 8e87830a80..b45ce1f916 100644
--- a/src/core/or/circuitmux_ewma.h
+++ b/src/core/or/circuitmux_ewma.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitpadding.c b/src/core/or/circuitpadding.c
new file mode 100644
index 0000000000..0dadc52139
--- /dev/null
+++ b/src/core/or/circuitpadding.c
@@ -0,0 +1,2562 @@
+/* Copyright (c) 2017 The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file circuitpadding.c
+ * \brief Circuit-level padding implementation
+ *
+ * \details
+ *
+ * This file implements Tor proposal 254 "Padding Negotiation" which is heavily
+ * inspired by the paper "Toward an Efficient Website Fingerprinting Defense"
+ * by M. Juarez, M. Imani, M. Perry, C. Diaz, M. Wright.
+ *
+ * In particular the code in this file describes mechanisms for clients to
+ * negotiate various types of circuit-level padding from relays.
+ *
+ * Each padding type is described by a state machine (circpad_machine_spec_t),
+ * which is also referred as a "padding machine" in this file. Currently,
+ * these state machines are hardcoded in the source code (e.g. see
+ * circpad_circ_client_machine_init()), but in the future we will be able to
+ * serialize them in the torrc or the consensus.
+ *
+ * As specified by prop#254, clients can negotiate padding with relays by using
+ * PADDING_NEGOTIATE cells. After successful padding negotiation, padding
+ * machines are assigned to the circuit in their mutable form as a
+ * circpad_machine_state_t.
+ *
+ * Each state of a padding state machine can be either:
+ * - A histogram that specifies inter-arrival padding delays.
+ * - Or a parametrized probability distribution that specifies inter-arrival
+ * delays (see circpad_distribution_type_t).
+ *
+ * Padding machines start from the START state and finish with the END
+ * state. They can transition between states using the events in
+ * circpad_event_t.
+ *
+ * When a padding machine reaches the END state, it gets wiped from the circuit
+ * so that other padding machines can take over if needed (see
+ * circpad_machine_spec_transitioned_to_end()).
+ **/
+
+#define CIRCUITPADDING_PRIVATE
+
+#include <math.h>
+#include "lib/math/fp.h"
+#include "lib/math/prob_distr.h"
+#include "core/or/or.h"
+#include "core/or/circuitpadding.h"
+#include "core/or/circuitlist.h"
+#include "core/or/circuituse.h"
+#include "core/or/relay.h"
+#include "feature/stats/rephist.h"
+#include "feature/nodelist/networkstatus.h"
+
+#include "core/or/channel.h"
+
+#include "lib/time/compat_time.h"
+#include "lib/defs/time.h"
+#include "lib/crypt_ops/crypto_rand.h"
+
+#include "core/or/crypt_path_st.h"
+#include "core/or/circuit_st.h"
+#include "core/or/origin_circuit_st.h"
+#include "feature/nodelist/routerstatus_st.h"
+#include "feature/nodelist/node_st.h"
+#include "core/or/cell_st.h"
+#include "core/or/extend_info_st.h"
+#include "core/crypto/relay_crypto.h"
+#include "feature/nodelist/nodelist.h"
+
+#include "app/config/config.h"
+
+static inline circpad_purpose_mask_t circpad_circ_purpose_to_mask(uint8_t
+ circ_purpose);
+static inline circpad_circuit_state_t circpad_circuit_state(
+ origin_circuit_t *circ);
+static void circpad_setup_machine_on_circ(circuit_t *on_circ,
+ const circpad_machine_spec_t *machine);
+static double circpad_distribution_sample(circpad_distribution_t dist);
+
+/** Cached consensus params */
+static uint8_t circpad_global_max_padding_percent;
+static uint16_t circpad_global_allowed_cells;
+
+/** Global cell counts, for rate limiting */
+static uint64_t circpad_global_padding_sent;
+static uint64_t circpad_global_nonpadding_sent;
+
+/** This is the list of circpad_machine_spec_t's parsed from consensus and
+ * torrc that have origin_side == 1 (ie: are for client side).
+ *
+ * The machines in this smartlist are considered immutable and they are used
+ * as-is by circuits so they should not change or get deallocated in Tor's
+ * runtime and as long as circuits are alive. */
+STATIC smartlist_t *origin_padding_machines = NULL;
+
+/** This is the list of circpad_machine_spec_t's parsed from consensus and
+ * torrc that have origin_side == 0 (ie: are for relay side).
+ *
+ * The machines in this smartlist are considered immutable and they are used
+ * as-is by circuits so they should not change or get deallocated in Tor's
+ * runtime and as long as circuits are alive. */
+STATIC smartlist_t *relay_padding_machines = NULL;
+
+/** Loop over the current padding state machines using <b>loop_var</b> as the
+ * loop variable. */
+#define FOR_EACH_CIRCUIT_MACHINE_BEGIN(loop_var) \
+ STMT_BEGIN \
+ for (int loop_var = 0; loop_var < CIRCPAD_MAX_MACHINES; loop_var++) {
+#define FOR_EACH_CIRCUIT_MACHINE_END } STMT_END ;
+
+/** Loop over the current active padding state machines using <b>loop_var</b>
+ * as the loop variable. If a machine is not active, skip it. */
+#define FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(loop_var, circ) \
+ FOR_EACH_CIRCUIT_MACHINE_BEGIN(loop_var) \
+ if (!(circ)->padding_info[loop_var]) \
+ continue;
+#define FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END } STMT_END ;
+
+/**
+ * Return a human-readable description for a circuit padding state.
+ */
+static const char *
+circpad_state_to_string(circpad_statenum_t state)
+{
+ const char *descr;
+
+ switch (state) {
+ case CIRCPAD_STATE_START:
+ descr = "START";
+ break;
+ case CIRCPAD_STATE_BURST:
+ descr = "BURST";
+ break;
+ case CIRCPAD_STATE_GAP:
+ descr = "GAP";
+ break;
+ case CIRCPAD_STATE_END:
+ descr = "END";
+ break;
+ default:
+ descr = "CUSTOM"; // XXX: Just return # in static char buf?
+ }
+
+ return descr;
+}
+
+/**
+ * Free the machineinfo at an index
+ */
+static void
+circpad_circuit_machineinfo_free_idx(circuit_t *circ, int idx)
+{
+ if (circ->padding_info[idx]) {
+ tor_free(circ->padding_info[idx]->histogram);
+ timer_free(circ->padding_info[idx]->padding_timer);
+ tor_free(circ->padding_info[idx]);
+ }
+}
+
+/** Free all the machineinfos in <b>circ</b> that match <b>machine_num</b>. */
+static void
+free_circ_machineinfos_with_machine_num(circuit_t *circ, int machine_num)
+{
+ FOR_EACH_CIRCUIT_MACHINE_BEGIN(i) {
+ if (circ->padding_machine[i] &&
+ circ->padding_machine[i]->machine_num == machine_num) {
+ circpad_circuit_machineinfo_free_idx(circ, i);
+ circ->padding_machine[i] = NULL;
+ }
+ } FOR_EACH_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * Free all padding machines and mutable info associated with circuit
+ */
+void
+circpad_circuit_free_all_machineinfos(circuit_t *circ)
+{
+ FOR_EACH_CIRCUIT_MACHINE_BEGIN(i) {
+ circpad_circuit_machineinfo_free_idx(circ, i);
+ } FOR_EACH_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * Allocate a new mutable machineinfo structure.
+ */
+STATIC circpad_machine_state_t *
+circpad_circuit_machineinfo_new(circuit_t *on_circ, int machine_index)
+{
+ circpad_machine_state_t *mi =
+ tor_malloc_zero(sizeof(circpad_machine_state_t));
+ mi->machine_index = machine_index;
+ mi->on_circ = on_circ;
+
+ return mi;
+}
+
+/**
+ * Return the circpad_state_t for the current state based on the
+ * mutable info.
+ *
+ * This function returns NULL when the machine is in the end state or in an
+ * invalid state.
+ */
+STATIC const circpad_state_t *
+circpad_machine_current_state(const circpad_machine_state_t *mi)
+{
+ const circpad_machine_spec_t *machine = CIRCPAD_GET_MACHINE(mi);
+
+ if (mi->current_state == CIRCPAD_STATE_END) {
+ return NULL;
+ } else if (BUG(mi->current_state >= machine->num_states)) {
+ log_fn(LOG_WARN,LD_CIRC,
+ "Invalid circuit padding state %d",
+ mi->current_state);
+
+ return NULL;
+ }
+
+ return &machine->states[mi->current_state];
+}
+
+/**
+ * Calculate the lower bound of a histogram bin. The upper bound
+ * is obtained by calling this function with bin+1, and subtracting 1.
+ *
+ * The 0th bin has a special value -- it only represents start_usec.
+ * This is so we can specify a probability on 0-delay values.
+ *
+ * After bin 0, bins are exponentially spaced, so that each subsequent
+ * bin is twice as large as the previous. This is done so that higher
+ * time resolution is given to lower time values.
+ *
+ * The infinity bin is a the last bin in the array (histogram_len-1).
+ * It has a usec value of CIRCPAD_DELAY_INFINITE (UINT32_MAX).
+ */
+STATIC circpad_delay_t
+circpad_histogram_bin_to_usec(const circpad_machine_state_t *mi,
+ circpad_hist_index_t bin)
+{
+ const circpad_state_t *state = circpad_machine_current_state(mi);
+ circpad_delay_t start_usec;
+
+ /* Our state should have been checked to be non-null by the caller
+ * (circpad_machine_remove_token()) */
+ if (BUG(state == NULL)) {
+ return CIRCPAD_DELAY_INFINITE;
+ }
+
+ if (state->use_rtt_estimate)
+ start_usec = mi->rtt_estimate_usec+state->start_usec;
+ else
+ start_usec = state->start_usec;
+
+ if (bin >= CIRCPAD_INFINITY_BIN(state))
+ return CIRCPAD_DELAY_INFINITE;
+
+ if (bin == 0)
+ return start_usec;
+
+ if (bin == 1)
+ return start_usec+1;
+
+ /* The bin widths double every index, so that we can have more resolution
+ * for lower time values in the histogram. */
+ const circpad_time_t bin_width_exponent =
+ 1 << (CIRCPAD_INFINITY_BIN(state) - bin);
+ return (circpad_delay_t)MIN(start_usec +
+ state->range_usec/bin_width_exponent,
+ CIRCPAD_DELAY_INFINITE);
+}
+
+/** Return the midpoint of the histogram bin <b>bin_index</b>. */
+static circpad_delay_t
+circpad_get_histogram_bin_midpoint(const circpad_machine_state_t *mi,
+ int bin_index)
+{
+ circpad_delay_t left_bound = circpad_histogram_bin_to_usec(mi, bin_index);
+ circpad_delay_t right_bound =
+ circpad_histogram_bin_to_usec(mi, bin_index+1)-1;
+
+ return left_bound + (right_bound - left_bound)/2;
+}
+
+/**
+ * Return the bin that contains the usec argument.
+ * "Contains" is defined as us in [lower, upper).
+ *
+ * This function will never return the infinity bin (histogram_len-1),
+ * in order to simplify the rest of the code.
+ *
+ * This means that technically the last bin (histogram_len-2)
+ * has range [start_usec+range_usec, CIRCPAD_DELAY_INFINITE].
+ */
+STATIC circpad_hist_index_t
+circpad_histogram_usec_to_bin(const circpad_machine_state_t *mi,
+ circpad_delay_t usec)
+{
+ const circpad_state_t *state = circpad_machine_current_state(mi);
+ circpad_delay_t start_usec;
+ int32_t bin; /* Larger than return type to properly clamp overflow */
+
+ /* Our state should have been checked to be non-null by the caller
+ * (circpad_machine_remove_token()) */
+ if (BUG(state == NULL)) {
+ return 0;
+ }
+
+ if (state->use_rtt_estimate)
+ start_usec = mi->rtt_estimate_usec+state->start_usec;
+ else
+ start_usec = state->start_usec;
+
+ /* The first bin (#0) has zero width and starts (and ends) at start_usec. */
+ if (usec <= start_usec)
+ return 0;
+
+ if (usec == start_usec+1)
+ return 1;
+
+ const circpad_time_t histogram_range_usec = state->range_usec;
+ /* We need to find the bin corresponding to our position in the range.
+ * Since bins are exponentially spaced in powers of two, we need to
+ * take the log2 of our position in histogram_range_usec. However,
+ * since tor_log2() returns the floor(log2(u64)), we have to adjust
+ * it to behave like ceil(log2(u64)). This is verified in our tests
+ * to properly invert the operation done in
+ * circpad_histogram_bin_to_usec(). */
+ bin = CIRCPAD_INFINITY_BIN(state) -
+ tor_log2(2*histogram_range_usec/(usec-start_usec+1));
+
+ /* Clamp the return value to account for timevals before the start
+ * of bin 0, or after the last bin. Don't return the infinity bin
+ * index. */
+ bin = MIN(MAX(bin, 1), CIRCPAD_INFINITY_BIN(state)-1);
+ return bin;
+}
+
+/**
+ * This function frees any token bins allocated from a previous state
+ *
+ * Called after a state transition, or if the bins are empty.
+ */
+STATIC void
+circpad_machine_setup_tokens(circpad_machine_state_t *mi)
+{
+ const circpad_state_t *state = circpad_machine_current_state(mi);
+
+ /* If this state doesn't exist, or doesn't have token removal,
+ * free any previous state's histogram, and bail */
+ if (!state || state->token_removal == CIRCPAD_TOKEN_REMOVAL_NONE) {
+ if (mi->histogram) {
+ tor_free(mi->histogram);
+ mi->histogram = NULL;
+ mi->histogram_len = 0;
+ }
+ return;
+ }
+
+ /* Try to avoid re-mallocing if we don't really need to */
+ if (!mi->histogram || (mi->histogram
+ && mi->histogram_len != state->histogram_len)) {
+ tor_free(mi->histogram); // null ok
+ mi->histogram = tor_malloc_zero(sizeof(circpad_hist_token_t)
+ *state->histogram_len);
+ }
+ mi->histogram_len = state->histogram_len;
+
+ memcpy(mi->histogram, state->histogram,
+ sizeof(circpad_hist_token_t)*state->histogram_len);
+}
+
+/**
+ * Choose a length for this state (in cells), if specified.
+ */
+static void
+circpad_choose_state_length(circpad_machine_state_t *mi)
+{
+ const circpad_state_t *state = circpad_machine_current_state(mi);
+ double length;
+
+ if (!state || state->length_dist.type == CIRCPAD_DIST_NONE) {
+ mi->state_length = CIRCPAD_STATE_LENGTH_INFINITE;
+ return;
+ }
+
+ length = circpad_distribution_sample(state->length_dist);
+ length = MAX(0, length);
+ length += state->start_length;
+ length = MIN(length, state->max_length);
+
+ mi->state_length = clamp_double_to_int64(length);
+}
+
+/**
+ * Sample a value from our iat_dist, and clamp it safely
+ * to circpad_delay_t.
+ */
+static circpad_delay_t
+circpad_distribution_sample_iat_delay(const circpad_state_t *state,
+ circpad_delay_t start_usec)
+{
+ double val = circpad_distribution_sample(state->iat_dist);
+ /* These comparisons are safe, because the output is in the range
+ * [0, 2**32), and double has a precision of 53 bits. */
+ val = MAX(0, val);
+ val = MIN(val, state->range_usec);
+
+ /* This addition is exact: val is at most 2**32-1, start_usec
+ * is at most 2**32-1, and doubles have a precision of 53 bits. */
+ val += start_usec;
+
+ /* Clamp the distribution at infinite delay val */
+ return (circpad_delay_t)MIN(tor_llround(val), CIRCPAD_DELAY_INFINITE);
+}
+
+/**
+ * Sample an expected time-until-next-packet delay from the histogram.
+ *
+ * The bin is chosen with probability proportional to the number
+ * of tokens in each bin, and then a time value is chosen uniformly from
+ * that bin's [start,end) time range.
+ */
+STATIC circpad_delay_t
+circpad_machine_sample_delay(circpad_machine_state_t *mi)
+{
+ const circpad_state_t *state = circpad_machine_current_state(mi);
+ const circpad_hist_token_t *histogram = NULL;
+ circpad_hist_index_t curr_bin = 0;
+ circpad_delay_t bin_start, bin_end;
+ circpad_delay_t start_usec;
+ /* These three must all be larger than circpad_hist_token_t, because
+ * we sum several circpad_hist_token_t values across the histogram */
+ uint64_t curr_weight = 0;
+ uint64_t histogram_total_tokens = 0;
+ uint64_t bin_choice;
+
+ tor_assert(state);
+
+ if (state->use_rtt_estimate)
+ start_usec = mi->rtt_estimate_usec+state->start_usec;
+ else
+ start_usec = state->start_usec;
+
+ if (state->iat_dist.type != CIRCPAD_DIST_NONE) {
+ /* Sample from a fixed IAT distribution and return */
+ return circpad_distribution_sample_iat_delay(state, start_usec);
+ } else if (state->token_removal != CIRCPAD_TOKEN_REMOVAL_NONE) {
+ /* We have a mutable histogram. Do basic sanity check and apply: */
+ if (BUG(!mi->histogram) ||
+ BUG(mi->histogram_len != state->histogram_len)) {
+ return CIRCPAD_DELAY_INFINITE;
+ }
+
+ histogram = mi->histogram;
+ for (circpad_hist_index_t b = 0; b < state->histogram_len; b++)
+ histogram_total_tokens += histogram[b];
+ } else {
+ /* We have a histogram, but it's immutable */
+ histogram = state->histogram;
+ histogram_total_tokens = state->histogram_total_tokens;
+ }
+
+ bin_choice = crypto_rand_uint64(histogram_total_tokens);
+
+ /* Skip all the initial zero bins */
+ while (!histogram[curr_bin]) {
+ curr_bin++;
+ }
+ curr_weight = histogram[curr_bin];
+
+ // TODO: This is not constant-time. Pretty sure we don't
+ // really need it to be, though.
+ while (curr_weight < bin_choice) {
+ curr_bin++;
+ /* It should be impossible to run past the end of the histogram */
+ if (BUG(curr_bin >= state->histogram_len)) {
+ return CIRCPAD_DELAY_INFINITE;
+ }
+ curr_weight += histogram[curr_bin];
+ }
+
+ /* Do some basic checking of the current bin we are in */
+ if (BUG(curr_bin >= state->histogram_len) ||
+ BUG(histogram[curr_bin] == 0)) {
+ return CIRCPAD_DELAY_INFINITE;
+ }
+
+ // Store this index to remove the token upon callback.
+ if (state->token_removal != CIRCPAD_TOKEN_REMOVAL_NONE) {
+ mi->chosen_bin = curr_bin;
+ }
+
+ if (curr_bin >= CIRCPAD_INFINITY_BIN(state)) {
+ if (state->token_removal != CIRCPAD_TOKEN_REMOVAL_NONE &&
+ mi->histogram[curr_bin] > 0) {
+ mi->histogram[curr_bin]--;
+ }
+
+ // Infinity: Don't send a padding packet. Wait for a real packet
+ // and then see if our bins are empty or what else we should do.
+ return CIRCPAD_DELAY_INFINITE;
+ }
+
+ tor_assert(curr_bin < CIRCPAD_INFINITY_BIN(state));
+
+ bin_start = circpad_histogram_bin_to_usec(mi, curr_bin);
+ /* We don't need to reduct 1 from the upper bound because the random range
+ * function below samples from [bin_start, bin_end) */
+ bin_end = circpad_histogram_bin_to_usec(mi, curr_bin+1);
+
+ /* Truncate the high bin in case it's the infinity bin:
+ * Don't actually schedule an "infinite"-1 delay */
+ bin_end = MIN(bin_end, start_usec+state->range_usec);
+
+ // Sample uniformly between histogram[i] to histogram[i+1]-1,
+ // but no need to sample if they are the same timeval (aka bin 0 or bin 1).
+ if (bin_end <= bin_start+1)
+ return bin_start;
+ else
+ return (circpad_delay_t)crypto_rand_uint64_range(bin_start, bin_end);
+}
+
+/**
+ * Sample a value from the specified probability distribution.
+ *
+ * This performs inverse transform sampling
+ * (https://en.wikipedia.org/wiki/Inverse_transform_sampling).
+ *
+ * XXX: These formulas were taken verbatim. Need a floating wizard
+ * to check them for catastropic cancellation and other issues (teor?).
+ * Also: is 32bits of double from [0.0,1.0) enough?
+ */
+static double
+circpad_distribution_sample(circpad_distribution_t dist)
+{
+ log_fn(LOG_DEBUG,LD_CIRC, "Sampling delay with distribution %d",
+ dist.type);
+
+ switch (dist.type) {
+ case CIRCPAD_DIST_NONE:
+ {
+ /* We should not get in here like this */
+ tor_assert_nonfatal_unreached();
+ return 0;
+ }
+ case CIRCPAD_DIST_UNIFORM:
+ {
+ // param2 is upper bound, param1 is lower
+ const struct uniform my_uniform = {
+ .base = UNIFORM(my_uniform),
+ .a = dist.param1,
+ .b = dist.param2,
+ };
+ return dist_sample(&my_uniform.base);
+ }
+ case CIRCPAD_DIST_LOGISTIC:
+ {
+ /* param1 is Mu, param2 is sigma. */
+ const struct logistic my_logistic = {
+ .base = LOGISTIC(my_logistic),
+ .mu = dist.param1,
+ .sigma = dist.param2,
+ };
+ return dist_sample(&my_logistic.base);
+ }
+ case CIRCPAD_DIST_LOG_LOGISTIC:
+ {
+ /* param1 is Alpha, param2 is 1.0/Beta */
+ const struct log_logistic my_log_logistic = {
+ .base = LOG_LOGISTIC(my_log_logistic),
+ .alpha = dist.param1,
+ .beta = dist.param2,
+ };
+ return dist_sample(&my_log_logistic.base);
+ }
+ case CIRCPAD_DIST_GEOMETRIC:
+ {
+ /* param1 is 'p' (success probability) */
+ const struct geometric my_geometric = {
+ .base = GEOMETRIC(my_geometric),
+ .p = dist.param1,
+ };
+ return dist_sample(&my_geometric.base);
+ }
+ case CIRCPAD_DIST_WEIBULL:
+ {
+ /* param1 is k, param2 is Lambda */
+ const struct weibull my_weibull = {
+ .base = WEIBULL(my_weibull),
+ .k = dist.param1,
+ .lambda = dist.param2,
+ };
+ return dist_sample(&my_weibull.base);
+ }
+ case CIRCPAD_DIST_PARETO:
+ {
+ /* param1 is sigma, param2 is xi, no more params for mu so we use 0 */
+ const struct genpareto my_genpareto = {
+ .base = GENPARETO(my_genpareto),
+ .mu = 0,
+ .sigma = dist.param1,
+ .xi = dist.param2,
+ };
+ return dist_sample(&my_genpareto.base);
+ }
+ }
+
+ tor_assert_nonfatal_unreached();
+ return 0;
+}
+
+/**
+ * Find the index of the first bin whose upper bound is
+ * greater than the target, and that has tokens remaining.
+ */
+static circpad_hist_index_t
+circpad_machine_first_higher_index(const circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec)
+{
+ circpad_hist_index_t bin = circpad_histogram_usec_to_bin(mi,
+ target_bin_usec);
+
+ /* Don't remove from the infinity bin */
+ for (; bin < CIRCPAD_INFINITY_BIN(mi); bin++) {
+ if (mi->histogram[bin] &&
+ circpad_histogram_bin_to_usec(mi, bin+1) > target_bin_usec) {
+ return bin;
+ }
+ }
+
+ return mi->histogram_len;
+}
+
+/**
+ * Find the index of the first bin whose lower bound is lower or equal to
+ * <b>target_bin_usec</b>, and that still has tokens remaining.
+ */
+static circpad_hist_index_t
+circpad_machine_first_lower_index(const circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec)
+{
+ circpad_hist_index_t bin = circpad_histogram_usec_to_bin(mi,
+ target_bin_usec);
+
+ for (; bin >= 0; bin--) {
+ if (mi->histogram[bin] &&
+ circpad_histogram_bin_to_usec(mi, bin) <= target_bin_usec) {
+ return bin;
+ }
+ }
+
+ return -1;
+}
+
+/**
+ * Remove a token from the first non-empty bin whose upper bound is
+ * greater than the target.
+ */
+STATIC void
+circpad_machine_remove_higher_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec)
+{
+ /* We need to remove the token from the first bin
+ * whose upper bound is greater than the target, and that
+ * has tokens remaining. */
+ circpad_hist_index_t bin = circpad_machine_first_higher_index(mi,
+ target_bin_usec);
+
+ if (bin >= 0 && bin < CIRCPAD_INFINITY_BIN(mi)) {
+ if (!BUG(mi->histogram[bin] == 0)) {
+ mi->histogram[bin]--;
+ }
+ }
+}
+
+/**
+ * Remove a token from the first non-empty bin whose upper bound is
+ * lower than the target.
+ */
+STATIC void
+circpad_machine_remove_lower_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec)
+{
+ circpad_hist_index_t bin = circpad_machine_first_lower_index(mi,
+ target_bin_usec);
+
+ if (bin >= 0 && bin < CIRCPAD_INFINITY_BIN(mi)) {
+ if (!BUG(mi->histogram[bin] == 0)) {
+ mi->histogram[bin]--;
+ }
+ }
+}
+
+/* Helper macro: Ensure that the bin has tokens available, and BUG out of the
+ * function if it's not the case. */
+#define ENSURE_BIN_CAPACITY(bin_index) \
+ if (BUG(mi->histogram[bin_index] == 0)) { \
+ return; \
+ }
+
+/**
+ * Remove a token from the closest non-empty bin to the target.
+ *
+ * If use_usec is true, measure "closest" in terms of the next closest bin
+ * midpoint.
+ *
+ * If it is false, use bin index distance only.
+ */
+STATIC void
+circpad_machine_remove_closest_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec,
+ bool use_usec)
+{
+ circpad_hist_index_t lower, higher, current;
+ circpad_hist_index_t bin_to_remove = -1;
+
+ lower = circpad_machine_first_lower_index(mi, target_bin_usec);
+ higher = circpad_machine_first_higher_index(mi, target_bin_usec);
+ current = circpad_histogram_usec_to_bin(mi, target_bin_usec);
+
+ /* Sanity check the results */
+ if (BUG(lower > current) || BUG(higher < current)) {
+ return;
+ }
+
+ /* Take care of edge cases first */
+ if (higher == mi->histogram_len && lower == -1) {
+ /* All bins are empty */
+ return;
+ } else if (higher == mi->histogram_len) {
+ /* All higher bins are empty */
+ ENSURE_BIN_CAPACITY(lower);
+ mi->histogram[lower]--;
+ return;
+ } else if (lower == -1) {
+ /* All lower bins are empty */
+ ENSURE_BIN_CAPACITY(higher);
+ mi->histogram[higher]--;
+ return;
+ }
+
+ /* Now handle the intermediate cases */
+ if (use_usec) {
+ /* Find the closest bin midpoint to the target */
+ circpad_delay_t lower_usec = circpad_get_histogram_bin_midpoint(mi, lower);
+ circpad_delay_t higher_usec =
+ circpad_get_histogram_bin_midpoint(mi, higher);
+
+ if (target_bin_usec < lower_usec) {
+ // Lower bin is closer
+ ENSURE_BIN_CAPACITY(lower);
+ bin_to_remove = lower;
+ } else if (target_bin_usec > higher_usec) {
+ // Higher bin is closer
+ ENSURE_BIN_CAPACITY(higher);
+ bin_to_remove = higher;
+ } else if (target_bin_usec-lower_usec > higher_usec-target_bin_usec) {
+ // Higher bin is closer
+ ENSURE_BIN_CAPACITY(higher);
+ bin_to_remove = higher;
+ } else {
+ // Lower bin is closer
+ ENSURE_BIN_CAPACITY(lower);
+ bin_to_remove = lower;
+ }
+ mi->histogram[bin_to_remove]--;
+ log_debug(LD_GENERAL, "Removing token from bin %d", bin_to_remove);
+ return;
+ } else {
+ if (current - lower > higher - current) {
+ // Higher bin is closer
+ ENSURE_BIN_CAPACITY(higher);
+ mi->histogram[higher]--;
+ return;
+ } else {
+ // Lower bin is closer
+ ENSURE_BIN_CAPACITY(lower);
+ mi->histogram[lower]--;
+ return;
+ }
+ }
+}
+
+#undef ENSURE_BIN_CAPACITY
+
+/**
+ * Remove a token from the exact bin corresponding to the target.
+ *
+ * If it is empty, do nothing.
+ */
+static void
+circpad_machine_remove_exact(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_usec)
+{
+ circpad_hist_index_t bin = circpad_histogram_usec_to_bin(mi,
+ target_bin_usec);
+
+ if (mi->histogram[bin] > 0)
+ mi->histogram[bin]--;
+}
+
+/**
+ * Check our state's cell limit count and tokens.
+ *
+ * Returns 1 if either limits are hit and we decide to change states,
+ * otherwise returns 0.
+ */
+static circpad_decision_t
+check_machine_token_supply(circpad_machine_state_t *mi)
+{
+ uint32_t histogram_total_tokens = 0;
+
+ /* Check if bins empty. This requires summing up the current mutable
+ * machineinfo histogram token total and checking if it is zero.
+ * Machineinfo does not keep a running token count. We're assuming the
+ * extra space is not worth this short loop iteration.
+ *
+ * We also do not count infinity bin in histogram totals.
+ */
+ if (mi->histogram_len && mi->histogram) {
+ for (circpad_hist_index_t b = 0; b < CIRCPAD_INFINITY_BIN(mi); b++)
+ histogram_total_tokens += mi->histogram[b];
+
+ /* If we change state, we're done */
+ if (histogram_total_tokens == 0) {
+ if (circpad_internal_event_bins_empty(mi) == CIRCPAD_STATE_CHANGED)
+ return CIRCPAD_STATE_CHANGED;
+ }
+ }
+
+ if (mi->state_length == 0) {
+ return circpad_internal_event_state_length_up(mi);
+ }
+
+ return CIRCPAD_STATE_UNCHANGED;
+}
+
+/**
+ * Remove a token from the bin corresponding to the delta since
+ * last packet. If that bin is empty, choose a token based on
+ * the specified removal strategy in the state machine.
+ *
+ * This function also updates and checks rate limit and state
+ * limit counters.
+ *
+ * Returns 1 if we transition states, 0 otherwise.
+ */
+STATIC circpad_decision_t
+circpad_machine_remove_token(circpad_machine_state_t *mi)
+{
+ const circpad_state_t *state = NULL;
+ circpad_time_t current_time;
+ circpad_delay_t target_bin_usec;
+
+ /* Update non-padding counts for rate limiting: We scale at UINT16_MAX
+ * because we only use this for a percentile limit of 2 sig figs, and
+ * space is scare in the machineinfo struct. */
+ mi->nonpadding_sent++;
+ if (mi->nonpadding_sent == UINT16_MAX) {
+ mi->padding_sent /= 2;
+ mi->nonpadding_sent /= 2;
+ }
+
+ /* Dont remove any tokens if there was no padding scheduled */
+ if (!mi->padding_scheduled_at_usec) {
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+
+ state = circpad_machine_current_state(mi);
+ current_time = monotime_absolute_usec();
+
+ /* If we have scheduled padding some time in the future, we want to see what
+ bin we are in at the current time */
+ target_bin_usec = (circpad_delay_t)
+ MIN((current_time - mi->padding_scheduled_at_usec),
+ CIRCPAD_DELAY_INFINITE-1);
+
+ /* We are treating this non-padding cell as a padding cell, so we cancel
+ padding timer, if present. */
+ mi->padding_scheduled_at_usec = 0;
+ if (mi->is_padding_timer_scheduled) {
+ mi->is_padding_timer_scheduled = 0;
+ timer_disable(mi->padding_timer);
+ }
+
+ /* If we are not in a padding state (like start or end), we're done */
+ if (!state)
+ return CIRCPAD_STATE_UNCHANGED;
+
+ /* If we're enforcing a state length on non-padding packets,
+ * decrement it */
+ if (mi->state_length != CIRCPAD_STATE_LENGTH_INFINITE &&
+ state->length_includes_nonpadding &&
+ mi->state_length > 0) {
+ mi->state_length--;
+ }
+
+ /* Perform the specified token removal strategy */
+ switch (state->token_removal) {
+ case CIRCPAD_TOKEN_REMOVAL_NONE:
+ break;
+ case CIRCPAD_TOKEN_REMOVAL_CLOSEST_USEC:
+ circpad_machine_remove_closest_token(mi, target_bin_usec, 1);
+ break;
+ case CIRCPAD_TOKEN_REMOVAL_CLOSEST:
+ circpad_machine_remove_closest_token(mi, target_bin_usec, 0);
+ break;
+ case CIRCPAD_TOKEN_REMOVAL_LOWER:
+ circpad_machine_remove_lower_token(mi, target_bin_usec);
+ break;
+ case CIRCPAD_TOKEN_REMOVAL_HIGHER:
+ circpad_machine_remove_higher_token(mi, target_bin_usec);
+ break;
+ case CIRCPAD_TOKEN_REMOVAL_EXACT:
+ circpad_machine_remove_exact(mi, target_bin_usec);
+ break;
+ }
+
+ /* Check our token and state length limits */
+ return check_machine_token_supply(mi);
+}
+
+/**
+ * Send a relay command with a relay cell payload on a circuit to
+ * the particular hopnum.
+ *
+ * Hopnum starts at 1 (1=guard, 2=middle, 3=exit, etc).
+ *
+ * Payload may be null.
+ *
+ * Returns negative on error, 0 on success.
+ */
+MOCK_IMPL(STATIC signed_error_t,
+circpad_send_command_to_hop,(origin_circuit_t *circ, uint8_t hopnum,
+ uint8_t relay_command, const uint8_t *payload,
+ ssize_t payload_len))
+{
+ crypt_path_t *target_hop = circuit_get_cpath_hop(circ, hopnum);
+ signed_error_t ret;
+
+ /* Check that the cpath has the target hop */
+ if (!target_hop) {
+ log_fn(LOG_WARN, LD_BUG, "Padding circuit %u has %d hops, not %d",
+ circ->global_identifier, circuit_get_cpath_len(circ), hopnum);
+ return -1;
+ }
+
+ /* Check that the target hop is opened */
+ if (target_hop->state != CPATH_STATE_OPEN) {
+ log_fn(LOG_WARN,LD_CIRC,
+ "Padding circuit %u has %d hops, not %d",
+ circ->global_identifier,
+ circuit_get_cpath_opened_len(circ), hopnum);
+ return -1;
+ }
+
+ /* Send the drop command to the second hop */
+ ret = relay_send_command_from_edge(0, TO_CIRCUIT(circ), relay_command,
+ (const char*)payload, payload_len,
+ target_hop);
+ return ret;
+}
+
+/**
+ * Callback helper to send a padding cell.
+ *
+ * This helper is called after our histogram-sampled delay period passes
+ * without another packet being sent first. If a packet is sent before this
+ * callback happens, it is canceled. So when we're called here, send padding
+ * right away.
+ *
+ * If sending this padding cell forced us to transition states return
+ * CIRCPAD_STATE_CHANGED. Otherwise return CIRCPAD_STATE_UNCHANGED.
+ */
+circpad_decision_t
+circpad_send_padding_cell_for_callback(circpad_machine_state_t *mi)
+{
+ circuit_t *circ = mi->on_circ;
+ int machine_idx = mi->machine_index;
+ mi->padding_scheduled_at_usec = 0;
+ circpad_statenum_t state = mi->current_state;
+
+ // Make sure circuit didn't close on us
+ if (mi->on_circ->marked_for_close) {
+ log_fn(LOG_INFO,LD_CIRC,
+ "Padding callback on a circuit marked for close. Ignoring.");
+ return CIRCPAD_STATE_CHANGED;
+ }
+
+ /* If it's a histogram, reduce the token count */
+ if (mi->histogram && mi->histogram_len) {
+ /* Basic sanity check on the histogram before removing anything */
+ if (BUG(mi->chosen_bin >= mi->histogram_len) ||
+ BUG(mi->histogram[mi->chosen_bin] == 0)) {
+ return CIRCPAD_STATE_CHANGED;
+ }
+
+ mi->histogram[mi->chosen_bin]--;
+ }
+
+ /* If we have a valid state length bound, consider it */
+ if (mi->state_length != CIRCPAD_STATE_LENGTH_INFINITE &&
+ !BUG(mi->state_length <= 0)) {
+ mi->state_length--;
+ }
+
+ /*
+ * Update non-padding counts for rate limiting: We scale at UINT16_MAX
+ * because we only use this for a percentile limit of 2 sig figs, and
+ * space is scare in the machineinfo struct.
+ */
+ mi->padding_sent++;
+ if (mi->padding_sent == UINT16_MAX) {
+ mi->padding_sent /= 2;
+ mi->nonpadding_sent /= 2;
+ }
+ circpad_global_padding_sent++;
+
+ if (CIRCUIT_IS_ORIGIN(mi->on_circ)) {
+ circpad_send_command_to_hop(TO_ORIGIN_CIRCUIT(mi->on_circ),
+ CIRCPAD_GET_MACHINE(mi)->target_hopnum,
+ RELAY_COMMAND_DROP, NULL, 0);
+ log_fn(LOG_INFO,LD_CIRC, "Callback: Sending padding to origin circuit %u.",
+ TO_ORIGIN_CIRCUIT(mi->on_circ)->global_identifier);
+ } else {
+ // If we're a non-origin circ, we can just send from here as if we're the
+ // edge.
+ log_fn(LOG_INFO,LD_CIRC,
+ "Callback: Sending padding to non-origin circuit.");
+ relay_send_command_from_edge(0, mi->on_circ, RELAY_COMMAND_DROP, NULL,
+ 0, NULL);
+ }
+
+ rep_hist_padding_count_write(PADDING_TYPE_DROP);
+ /* This is a padding cell sent from the client or from the middle node,
+ * (because it's invoked from circuitpadding.c) */
+ circpad_cell_event_padding_sent(circ);
+
+ /* The circpad_cell_event_padding_sent() could cause us to transition.
+ * Check that we still have a padding machineinfo, and then check our token
+ * supply. */
+ if (circ->padding_info[machine_idx] != NULL) {
+ if (state != circ->padding_info[machine_idx]->current_state)
+ return CIRCPAD_STATE_CHANGED;
+ else
+ return check_machine_token_supply(circ->padding_info[machine_idx]);
+ } else {
+ return CIRCPAD_STATE_CHANGED;
+ }
+}
+
+/**
+ * Tor-timer compatible callback that tells us to send a padding cell.
+ *
+ * Timers are associated with circpad_machine_state_t's. When the machineinfo
+ * is freed on a circuit, the timers are cancelled. Since the lifetime
+ * of machineinfo is always longer than the timers, handles are not
+ * needed.
+ */
+static void
+circpad_send_padding_callback(tor_timer_t *timer, void *args,
+ const struct monotime_t *time)
+{
+ circpad_machine_state_t *mi = ((circpad_machine_state_t*)args);
+ (void)timer; (void)time;
+
+ if (mi && mi->on_circ) {
+ assert_circuit_ok(mi->on_circ);
+ circpad_send_padding_cell_for_callback(mi);
+ } else {
+ // This shouldn't happen (represents a timer leak)
+ log_fn(LOG_WARN,LD_CIRC,
+ "Circuit closed while waiting for padding timer.");
+ tor_fragile_assert();
+ }
+
+ // TODO-MP-AP: Unify this counter with channelpadding for rephist stats
+ //total_timers_pending--;
+}
+
+/**
+ * Cache our consensus parameters upon consensus update.
+ */
+void
+circpad_new_consensus_params(const networkstatus_t *ns)
+{
+ circpad_global_allowed_cells =
+ networkstatus_get_param(ns, "circpad_global_allowed_cells",
+ 0, 0, UINT16_MAX-1);
+
+ circpad_global_max_padding_percent =
+ networkstatus_get_param(ns, "circpad_global_max_padding_pct",
+ 0, 0, 100);
+}
+
+/**
+ * Check this machine against its padding limits, as well as global
+ * consensus limits.
+ *
+ * We have two limits: a percent and a cell count. The cell count
+ * limit must be reached before the percent is enforced (this is to
+ * optionally allow very light padding of things like circuit setup
+ * while there is no other traffic on the circuit).
+ *
+ * TODO: Don't apply limits to machines form torrc.
+ *
+ * Returns 1 if limits are set and we've hit them. Otherwise returns 0.
+ */
+STATIC bool
+circpad_machine_reached_padding_limit(circpad_machine_state_t *mi)
+{
+ const circpad_machine_spec_t *machine = CIRCPAD_GET_MACHINE(mi);
+
+ /* If machine_padding_pct is non-zero, and we've sent more
+ * than the allowed count of padding cells, then check our
+ * percent limits for this machine. */
+ if (machine->max_padding_percent &&
+ mi->padding_sent >= machine->allowed_padding_count) {
+ uint32_t total_cells = mi->padding_sent + mi->nonpadding_sent;
+
+ /* Check the percent */
+ if ((100*(uint32_t)mi->padding_sent) / total_cells >
+ machine->max_padding_percent) {
+ return 1; // limit is reached. Stop.
+ }
+ }
+
+ /* If circpad_max_global_padding_pct is non-zero, and we've
+ * sent more than the global padding cell limit, then check our
+ * gloabl tor process percentage limit on padding. */
+ if (circpad_global_max_padding_percent &&
+ circpad_global_padding_sent >= circpad_global_allowed_cells) {
+ uint64_t total_cells = circpad_global_padding_sent +
+ circpad_global_nonpadding_sent;
+
+ /* Check the percent */
+ if ((100*circpad_global_padding_sent) / total_cells >
+ circpad_global_max_padding_percent) {
+ return 1; // global limit reached. Stop.
+ }
+ }
+
+ return 0; // All good!
+}
+
+/**
+ * Schedule the next padding time according to the machineinfo on a
+ * circuit.
+ *
+ * The histograms represent inter-packet-delay. Whenever you get an packet
+ * event you should be scheduling your next timer (after cancelling any old
+ * ones and updating tokens accordingly).
+ *
+ * Returns 1 if we decide to transition states (due to infinity bin),
+ * 0 otherwise.
+ */
+MOCK_IMPL(circpad_decision_t,
+circpad_machine_schedule_padding,(circpad_machine_state_t *mi))
+{
+ circpad_delay_t in_usec = 0;
+ struct timeval timeout;
+ tor_assert(mi);
+
+ // Don't pad in end (but also don't cancel any previously
+ // scheduled padding either).
+ if (mi->current_state == CIRCPAD_STATE_END) {
+ log_fn(LOG_INFO, LD_CIRC, "Padding end state");
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+
+ /* Check our padding limits */
+ if (circpad_machine_reached_padding_limit(mi)) {
+ if (CIRCUIT_IS_ORIGIN(mi->on_circ)) {
+ log_fn(LOG_INFO, LD_CIRC,
+ "Padding machine has reached padding limit on circuit %u",
+ TO_ORIGIN_CIRCUIT(mi->on_circ)->global_identifier);
+ } else {
+ log_fn(LOG_INFO, LD_CIRC,
+ "Padding machine has reached padding limit on circuit %"PRIu64
+ ", %d",
+ mi->on_circ->n_chan ? mi->on_circ->n_chan->global_identifier : 0,
+ mi->on_circ->n_circ_id);
+ }
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+
+ if (mi->is_padding_timer_scheduled) {
+ /* Cancel current timer (if any) */
+ timer_disable(mi->padding_timer);
+ mi->is_padding_timer_scheduled = 0;
+ }
+
+ /* in_usec = in microseconds */
+ in_usec = circpad_machine_sample_delay(mi);
+ mi->padding_scheduled_at_usec = monotime_absolute_usec();
+ log_fn(LOG_INFO,LD_CIRC,"\tPadding in %u usec", in_usec);
+
+ // Don't schedule if we have infinite delay.
+ if (in_usec == CIRCPAD_DELAY_INFINITE) {
+ return circpad_internal_event_infinity(mi);
+ }
+
+ if (mi->state_length == 0) {
+ /* If we're at length 0, that means we hit 0 after sending
+ * a cell earlier, and emitted an event for it, but
+ * for whatever reason we did not decide to change states then.
+ * So maybe the machine is waiting for bins empty, or for an
+ * infinity event later? That would be a strange machine,
+ * but there's no reason to make it impossible. */
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+
+ if (in_usec <= 0) {
+ return circpad_send_padding_cell_for_callback(mi);
+ }
+
+ timeout.tv_sec = in_usec/TOR_USEC_PER_SEC;
+ timeout.tv_usec = (in_usec%TOR_USEC_PER_SEC);
+
+ log_fn(LOG_INFO, LD_CIRC, "\tPadding in %u sec, %u usec",
+ (unsigned)timeout.tv_sec, (unsigned)timeout.tv_usec);
+
+ if (mi->padding_timer) {
+ timer_set_cb(mi->padding_timer, circpad_send_padding_callback, mi);
+ } else {
+ mi->padding_timer =
+ timer_new(circpad_send_padding_callback, mi);
+ }
+ timer_schedule(mi->padding_timer, &timeout);
+ mi->is_padding_timer_scheduled = 1;
+
+ // TODO-MP-AP: Unify with channelpadding counter
+ //rep_hist_padding_count_timers(++total_timers_pending);
+
+ return CIRCPAD_STATE_UNCHANGED;
+}
+
+/**
+ * If the machine transitioned to the END state, we need
+ * to check to see if it wants us to shut it down immediately.
+ * If it does, then we need to send the appropate negotation commands
+ * depending on which side it is.
+ *
+ * After this function is called, mi may point to freed memory. Do
+ * not access it.
+ */
+static void
+circpad_machine_spec_transitioned_to_end(circpad_machine_state_t *mi)
+{
+ const circpad_machine_spec_t *machine = CIRCPAD_GET_MACHINE(mi);
+
+ /*
+ * We allow machines to shut down and delete themselves as opposed
+ * to just going back to START or waiting forever in END so that
+ * we can handle the case where this machine started while it was
+ * the only machine that matched conditions, but *since* then more
+ * "higher ranking" machines now match the conditions, and would
+ * be given a chance to take precidence over this one in
+ * circpad_add_matching_machines().
+ *
+ * Returning to START or waiting forever in END would not give those
+ * other machines a chance to be launched, where as shutting down
+ * here does.
+ */
+ if (machine->should_negotiate_end) {
+ circuit_t *on_circ = mi->on_circ;
+ if (machine->is_origin_side) {
+ /* We free the machine info here so that we can be replaced
+ * by a different machine. But we must leave the padding_machine
+ * in place to wait for the negotiated response */
+ circpad_circuit_machineinfo_free_idx(on_circ,
+ machine->machine_index);
+ circpad_negotiate_padding(TO_ORIGIN_CIRCUIT(on_circ),
+ machine->machine_num,
+ machine->target_hopnum,
+ CIRCPAD_COMMAND_STOP);
+ } else {
+ circpad_circuit_machineinfo_free_idx(on_circ,
+ machine->machine_index);
+ circpad_padding_negotiated(on_circ,
+ machine->machine_num,
+ CIRCPAD_COMMAND_STOP,
+ CIRCPAD_RESPONSE_OK);
+ on_circ->padding_machine[machine->machine_index] = NULL;
+ }
+ }
+}
+
+/**
+ * Generic state transition function for padding state machines.
+ *
+ * Given an event and our mutable machine info, decide if/how to
+ * transition to a different state, and perform actions accordingly.
+ *
+ * Returns 1 if we transition states, 0 otherwise.
+ */
+MOCK_IMPL(circpad_decision_t,
+circpad_machine_spec_transition,(circpad_machine_state_t *mi,
+ circpad_event_t event))
+{
+ const circpad_state_t *state =
+ circpad_machine_current_state(mi);
+
+ /* If state is null we are in the end state. */
+ if (!state) {
+ /* If we in end state we don't pad no matter what. */
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+
+ /* Check if this event is ignored or causes a cancel */
+ if (state->next_state[event] == CIRCPAD_STATE_IGNORE) {
+ return CIRCPAD_STATE_UNCHANGED;
+ } else if (state->next_state[event] == CIRCPAD_STATE_CANCEL) {
+ /* Check cancel events and cancel any pending padding */
+ mi->padding_scheduled_at_usec = 0;
+ if (mi->is_padding_timer_scheduled) {
+ mi->is_padding_timer_scheduled = 0;
+ /* Cancel current timer (if any) */
+ timer_disable(mi->padding_timer);
+ }
+ return CIRCPAD_STATE_UNCHANGED;
+ } else {
+ circpad_statenum_t s = state->next_state[event];
+ /* See if we need to transition to any other states based on this event.
+ * Whenever a transition happens, even to our own state, we schedule
+ * padding.
+ *
+ * So if a state only wants to schedule padding for an event, it specifies
+ * a transition to itself. All non-specified events are ignored.
+ */
+ log_fn(LOG_INFO, LD_CIRC,
+ "Circpad machine %d transitioning from %s to %s",
+ mi->machine_index, circpad_state_to_string(mi->current_state),
+ circpad_state_to_string(s));
+
+ /* If this is not the same state, switch and init tokens,
+ * otherwise just reschedule padding. */
+ if (mi->current_state != s) {
+ mi->current_state = s;
+ circpad_machine_setup_tokens(mi);
+ circpad_choose_state_length(mi);
+
+ /* If we transition to the end state, check to see
+ * if this machine wants to be shut down at end */
+ if (s == CIRCPAD_STATE_END) {
+ circpad_machine_spec_transitioned_to_end(mi);
+ /* We transitioned but we don't pad in end. Also, mi
+ * may be freed. Returning STATE_CHANGED prevents us
+ * from accessing it in any callers of this function. */
+ return CIRCPAD_STATE_CHANGED;
+ }
+
+ /* We transitioned to a new state, schedule padding */
+ circpad_machine_schedule_padding(mi);
+ return CIRCPAD_STATE_CHANGED;
+ }
+
+ /* We transitioned back to the same state. Schedule padding,
+ * and inform if that causes a state transition. */
+ return circpad_machine_schedule_padding(mi);
+ }
+
+ return CIRCPAD_STATE_UNCHANGED;
+}
+
+/**
+ * Estimate the circuit RTT from the current middle hop out to the
+ * end of the circuit.
+ *
+ * We estimate RTT by calculating the time between "receive" and
+ * "send" at a middle hop. This is because we "receive" a cell
+ * from the origin, and then relay it towards the exit before a
+ * response comes back. It is that response time from the exit side
+ * that we want to measure, so that we can make use of it for synthetic
+ * response delays.
+ */
+static void
+circpad_estimate_circ_rtt_on_received(circuit_t *circ,
+ circpad_machine_state_t *mi)
+{
+ /* Origin circuits don't estimate RTT. They could do it easily enough,
+ * but they have no reason to use it in any delay calculations. */
+ if (CIRCUIT_IS_ORIGIN(circ) || mi->stop_rtt_update)
+ return;
+
+ /* If we already have a last receieved packet time, that means we
+ * did not get a response before this packet. The RTT estimate
+ * only makes sense if we do not have multiple packets on the
+ * wire, so stop estimating if this is the second packet
+ * back to back. However, for the first set of back-to-back
+ * packets, we can wait until the very first response comes back
+ * to us, to measure that RTT (for the response to optimistic
+ * data, for example). Hence stop_rtt_update is only checked
+ * in this received side function, and not in send side below.
+ */
+ if (mi->last_received_time_usec) {
+ /* We also allow multiple back-to-back packets if the circuit is not
+ * opened, to handle var cells.
+ * XXX: Will this work with out var cell plans? Maybe not,
+ * since we're opened at the middle hop as soon as we process
+ * one var extend2 :/ */
+ if (circ->state == CIRCUIT_STATE_OPEN) {
+ log_fn(LOG_INFO, LD_CIRC,
+ "Stopping padding RTT estimation on circuit (%"PRIu64
+ ", %d) after two back to back packets. Current RTT: %d",
+ circ->n_chan ? circ->n_chan->global_identifier : 0,
+ circ->n_circ_id, mi->rtt_estimate_usec);
+ mi->stop_rtt_update = 1;
+ }
+ } else {
+ mi->last_received_time_usec = monotime_absolute_usec();
+ }
+}
+
+/**
+ * Handles the "send" side of RTT calculation at middle nodes.
+ *
+ * This function calculates the RTT from the middle to the end
+ * of the circuit by subtracting the last received cell timestamp
+ * from the current time. It allows back-to-back cells until
+ * the circuit is opened, to allow for var cell handshakes.
+ * XXX: Check our var cell plans to make sure this will work.
+ */
+static void
+circpad_estimate_circ_rtt_on_send(circuit_t *circ,
+ circpad_machine_state_t *mi)
+{
+ /* Origin circuits don't estimate RTT. They could do it easily enough,
+ * but they have no reason to use it in any delay calculations. */
+ if (CIRCUIT_IS_ORIGIN(circ))
+ return;
+
+ /* If last_received_time_usec is non-zero, we are waiting for a response
+ * from the exit side. Calculate the time delta and use it as RTT. */
+ if (mi->last_received_time_usec) {
+ circpad_time_t rtt_time = monotime_absolute_usec() -
+ mi->last_received_time_usec;
+
+ /* Reset the last RTT packet time, so we can tell if two cells
+ * arrive back to back */
+ mi->last_received_time_usec = 0;
+
+ /* Use INT32_MAX to ensure the addition doesn't overflow */
+ if (rtt_time >= INT32_MAX) {
+ log_fn(LOG_WARN,LD_CIRC,
+ "Circuit padding RTT estimate overflowed: %"PRIu64
+ " vs %"PRIu64, monotime_absolute_usec(),
+ mi->last_received_time_usec);
+ return;
+ }
+
+ /* If the old RTT estimate is lower than this one, use this one, because
+ * the circuit is getting longer. If this estimate is somehow
+ * faster than the previous, then maybe that was network jitter.
+ * In that case, average them. */
+ if (mi->rtt_estimate_usec < (circpad_delay_t)rtt_time) {
+ mi->rtt_estimate_usec = (circpad_delay_t)rtt_time;
+ } else {
+ mi->rtt_estimate_usec += (circpad_delay_t)rtt_time;
+ mi->rtt_estimate_usec /= 2;
+ }
+ } else if (circ->state == CIRCUIT_STATE_OPEN) {
+ /* If last_received_time_usec is zero, then we have gotten two cells back
+ * to back. Stop estimating RTT in this case. Note that we only
+ * stop RTT update if the circuit is opened, to allow for RTT estimates
+ * of var cells during circ setup. */
+ mi->stop_rtt_update = 1;
+
+ if (!mi->rtt_estimate_usec) {
+ log_fn(LOG_NOTICE, LD_CIRC,
+ "Got two cells back to back on a circuit before estimating RTT.");
+ }
+ }
+}
+
+/**
+ * A "non-padding" cell has been sent from this endpoint. React
+ * according to any padding state machines on the circuit.
+ *
+ * For origin circuits, this means we sent a cell into the network.
+ * For middle relay circuits, this means we sent a cell towards the
+ * origin.
+ */
+void
+circpad_cell_event_nonpadding_sent(circuit_t *on_circ)
+{
+ /* Update global cell count */
+ circpad_global_nonpadding_sent++;
+
+ /* If there are no machines then this loop should not iterate */
+ FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(i, on_circ) {
+ /* First, update any RTT estimate */
+ circpad_estimate_circ_rtt_on_send(on_circ, on_circ->padding_info[i]);
+
+ /* Remove a token: this is the idea of adaptive padding, since we have an
+ * ideal distribution that we want our distribution to look like. */
+ if (!circpad_machine_remove_token(on_circ->padding_info[i])) {
+ /* If removing a token did not cause a transition, check if
+ * non-padding sent event should */
+ circpad_machine_spec_transition(on_circ->padding_info[i],
+ CIRCPAD_EVENT_NONPADDING_SENT);
+ }
+ } FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * A "non-padding" cell has been received by this endpoint. React
+ * according to any padding state machines on the circuit.
+ *
+ * For origin circuits, this means we read a cell from the network.
+ * For middle relay circuits, this means we received a cell from the
+ * origin.
+ */
+void
+circpad_cell_event_nonpadding_received(circuit_t *on_circ)
+{
+ FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(i, on_circ) {
+ /* First, update any RTT estimate */
+ circpad_estimate_circ_rtt_on_received(on_circ, on_circ->padding_info[i]);
+
+ circpad_machine_spec_transition(on_circ->padding_info[i],
+ CIRCPAD_EVENT_NONPADDING_RECV);
+ } FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * A padding cell has been sent from this endpoint. React
+ * according to any padding state machines on the circuit.
+ *
+ * For origin circuits, this means we sent a cell into the network.
+ * For middle relay circuits, this means we sent a cell towards the
+ * origin.
+ */
+void
+circpad_cell_event_padding_sent(circuit_t *on_circ)
+{
+ FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(i, on_circ) {
+ circpad_machine_spec_transition(on_circ->padding_info[i],
+ CIRCPAD_EVENT_PADDING_SENT);
+ } FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * A padding cell has been received by this endpoint. React
+ * according to any padding state machines on the circuit.
+ *
+ * For origin circuits, this means we read a cell from the network.
+ * For middle relay circuits, this means we received a cell from the
+ * origin.
+ */
+void
+circpad_cell_event_padding_received(circuit_t *on_circ)
+{
+ /* identical to padding sent */
+ FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(i, on_circ) {
+ circpad_machine_spec_transition(on_circ->padding_info[i],
+ CIRCPAD_EVENT_PADDING_RECV);
+ } FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * An "infinite" delay has ben chosen from one of our histograms.
+ *
+ * "Infinite" delays mean don't send padding -- but they can also
+ * mean transition to another state depending on the state machine
+ * definitions. Check the rules and react accordingly.
+ *
+ * Return 1 if we decide to transition, 0 otherwise.
+ */
+circpad_decision_t
+circpad_internal_event_infinity(circpad_machine_state_t *mi)
+{
+ return circpad_machine_spec_transition(mi, CIRCPAD_EVENT_INFINITY);
+}
+
+/**
+ * All of the bins of our current state's histogram's are empty.
+ *
+ * Check to see if this means transition to another state, and if
+ * not, refill the tokens.
+ *
+ * Return 1 if we decide to transition, 0 otherwise.
+ */
+circpad_decision_t
+circpad_internal_event_bins_empty(circpad_machine_state_t *mi)
+{
+ if (circpad_machine_spec_transition(mi, CIRCPAD_EVENT_BINS_EMPTY)
+ == CIRCPAD_STATE_CHANGED) {
+ return CIRCPAD_STATE_CHANGED;
+ } else {
+ /* If we dont transition, then we refill the tokens */
+ circpad_machine_setup_tokens(mi);
+ return CIRCPAD_STATE_UNCHANGED;
+ }
+}
+
+/**
+ * This state has used up its cell count. Emit the event and
+ * see if we transition.
+ *
+ * Return 1 if we decide to transition, 0 otherwise.
+ */
+circpad_decision_t
+circpad_internal_event_state_length_up(circpad_machine_state_t *mi)
+{
+ return circpad_machine_spec_transition(mi, CIRCPAD_EVENT_LENGTH_COUNT);
+}
+
+/**
+ * Returns true if the circuit matches the conditions.
+ */
+static inline bool
+circpad_machine_conditions_met(origin_circuit_t *circ,
+ const circpad_machine_spec_t *machine)
+{
+ if (!(circpad_circ_purpose_to_mask(TO_CIRCUIT(circ)->purpose)
+ & machine->conditions.purpose_mask))
+ return 0;
+
+ if (machine->conditions.requires_vanguards) {
+ const or_options_t *options = get_options();
+
+ /* Pinned middles are effectively vanguards */
+ if (!(options->HSLayer2Nodes || options->HSLayer3Nodes))
+ return 0;
+ }
+
+ /* We check for any bits set in the circuit state mask so that machines
+ * can say any of the following through their state bitmask:
+ * "I want to apply to circuits with either streams or no streams"; OR
+ * "I only want to apply to circuits with streams"; OR
+ * "I only want to apply to circuits without streams". */
+ if (!(circpad_circuit_state(circ) & machine->conditions.state_mask))
+ return 0;
+
+ if (circuit_get_cpath_opened_len(circ) < machine->conditions.min_hops)
+ return 0;
+
+ return 1;
+}
+
+/**
+ * Returns a minimized representation of the circuit state.
+ *
+ * The padding code only cares if the circuit is building,
+ * opened, used for streams, and/or still has relay early cells.
+ * This returns a bitmask of all state properities that apply to
+ * this circuit.
+ */
+static inline
+circpad_circuit_state_t
+circpad_circuit_state(origin_circuit_t *circ)
+{
+ circpad_circuit_state_t retmask = 0;
+
+ if (circ->p_streams)
+ retmask |= CIRCPAD_CIRC_STREAMS;
+ else
+ retmask |= CIRCPAD_CIRC_NO_STREAMS;
+
+ /* We use has_opened to prevent cannibialized circs from flapping. */
+ if (circ->has_opened)
+ retmask |= CIRCPAD_CIRC_OPENED;
+ else
+ retmask |= CIRCPAD_CIRC_BUILDING;
+
+ if (circ->remaining_relay_early_cells > 0)
+ retmask |= CIRCPAD_CIRC_HAS_RELAY_EARLY;
+ else
+ retmask |= CIRCPAD_CIRC_HAS_NO_RELAY_EARLY;
+
+ return retmask;
+}
+
+/**
+ * Convert a normal circuit purpose into a bitmask that we can
+ * use for determining matching circuits.
+ */
+static inline
+circpad_purpose_mask_t
+circpad_circ_purpose_to_mask(uint8_t circ_purpose)
+{
+ /* Treat OR circ purposes as ignored. They should not be passed here*/
+ if (BUG(circ_purpose <= CIRCUIT_PURPOSE_OR_MAX_)) {
+ return 0;
+ }
+
+ /* Treat new client circuit purposes as "OMG ITS EVERYTHING".
+ * This also should not happen */
+ if (BUG(circ_purpose - CIRCUIT_PURPOSE_OR_MAX_ - 1 > 32)) {
+ return CIRCPAD_PURPOSE_ALL;
+ }
+
+ /* Convert the purpose to a bit position */
+ return 1 << (circ_purpose - CIRCUIT_PURPOSE_OR_MAX_ - 1);
+}
+
+/**
+ * Shut down any machines whose conditions no longer match
+ * the current circuit.
+ */
+static void
+circpad_shutdown_old_machines(origin_circuit_t *on_circ)
+{
+ circuit_t *circ = TO_CIRCUIT(on_circ);
+
+ FOR_EACH_ACTIVE_CIRCUIT_MACHINE_BEGIN(i, circ) {
+ if (!circpad_machine_conditions_met(on_circ,
+ circ->padding_machine[i])) {
+ // Clear machineinfo (frees timers)
+ circpad_circuit_machineinfo_free_idx(circ, i);
+ // Send padding negotiate stop
+ circpad_negotiate_padding(on_circ,
+ circ->padding_machine[i]->machine_num,
+ circ->padding_machine[i]->target_hopnum,
+ CIRCPAD_COMMAND_STOP);
+ }
+ } FOR_EACH_ACTIVE_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * Negotiate new machines that would apply to this circuit.
+ *
+ * This function checks to see if we have any free machine indexes,
+ * and for each free machine index, it initializes the most recently
+ * added origin-side padding machine that matches the target machine
+ * index and circuit conditions, and negotiates it with the appropriate
+ * middle relay.
+ */
+static void
+circpad_add_matching_machines(origin_circuit_t *on_circ)
+{
+ circuit_t *circ = TO_CIRCUIT(on_circ);
+
+#ifdef TOR_UNIT_TESTS
+ /* Tests don't have to init our padding machines */
+ if (!origin_padding_machines)
+ return;
+#endif
+
+ /* If padding negotiation failed before, do not try again */
+ if (on_circ->padding_negotiation_failed)
+ return;
+
+ FOR_EACH_CIRCUIT_MACHINE_BEGIN(i) {
+ /* If there is a padding machine info, this index is occupied.
+ * No need to check conditions for this index. */
+ if (circ->padding_info[i])
+ continue;
+
+ /* We have a free machine index. Check the origin padding
+ * machines in reverse order, so that more recently added
+ * machines take priority over older ones. */
+ SMARTLIST_FOREACH_REVERSE_BEGIN(origin_padding_machines,
+ circpad_machine_spec_t *,
+ machine) {
+ /* Machine definitions have a specific target machine index.
+ * This is so event ordering is deterministic with respect
+ * to which machine gets events first when there are two
+ * machines installed on a circuit. Make sure we only
+ * add this machine if its target machine index is free. */
+ if (machine->machine_index == i &&
+ circpad_machine_conditions_met(on_circ, machine)) {
+
+ // We can only replace this machine if the target hopnum
+ // is the same, otherwise we'll get invalid data
+ if (circ->padding_machine[i]) {
+ if (circ->padding_machine[i]->target_hopnum !=
+ machine->target_hopnum)
+ continue;
+ /* Replace it. (Don't free - is global). */
+ circ->padding_machine[i] = NULL;
+ }
+
+ /* Set up the machine immediately so that the slot is occupied.
+ * We will tear it down on error return, or if there is an error
+ * response from the relay. */
+ circpad_setup_machine_on_circ(circ, machine);
+ if (circpad_negotiate_padding(on_circ, machine->machine_num,
+ machine->target_hopnum,
+ CIRCPAD_COMMAND_START) < 0) {
+ circpad_circuit_machineinfo_free_idx(circ, i);
+ circ->padding_machine[i] = NULL;
+ on_circ->padding_negotiation_failed = 1;
+ } else {
+ /* Success. Don't try any more machines */
+ return;
+ }
+ }
+ } SMARTLIST_FOREACH_END(machine);
+ } FOR_EACH_CIRCUIT_MACHINE_END;
+}
+
+/**
+ * Event that tells us we added a hop to an origin circuit.
+ *
+ * This event is used to decide if we should create a padding machine
+ * on a circuit.
+ */
+void
+circpad_machine_event_circ_added_hop(origin_circuit_t *on_circ)
+{
+ /* Since our padding conditions do not specify a max_hops,
+ * all we can do is add machines here */
+ circpad_add_matching_machines(on_circ);
+}
+
+/**
+ * Event that tells us that an origin circuit is now built.
+ *
+ * Shut down any machines that only applied to un-built circuits.
+ * Activate any new ones.
+ */
+void
+circpad_machine_event_circ_built(origin_circuit_t *circ)
+{
+ circpad_shutdown_old_machines(circ);
+ circpad_add_matching_machines(circ);
+}
+
+/**
+ * Circpad purpose changed event.
+ *
+ * Shut down any machines that don't apply to our circ purpose.
+ * Activate any new ones that do.
+ */
+void
+circpad_machine_event_circ_purpose_changed(origin_circuit_t *circ)
+{
+ circpad_shutdown_old_machines(circ);
+ circpad_add_matching_machines(circ);
+}
+
+/**
+ * Event that tells us that an origin circuit is out of RELAY_EARLY
+ * cells.
+ *
+ * Shut down any machines that only applied to RELAY_EARLY circuits.
+ * Activate any new ones.
+ */
+void
+circpad_machine_event_circ_has_no_relay_early(origin_circuit_t *circ)
+{
+ circpad_shutdown_old_machines(circ);
+ circpad_add_matching_machines(circ);
+}
+
+/**
+ * Streams attached event.
+ *
+ * Called from link_apconn_to_circ() and handle_hs_exit_conn()
+ *
+ * Shut down any machines that only applied to machines without
+ * streams. Activate any new ones.
+ */
+void
+circpad_machine_event_circ_has_streams(origin_circuit_t *circ)
+{
+ circpad_shutdown_old_machines(circ);
+ circpad_add_matching_machines(circ);
+}
+
+/**
+ * Streams detached event.
+ *
+ * Called from circuit_detach_stream()
+ *
+ * Shut down any machines that only applied to machines without
+ * streams. Activate any new ones.
+ */
+void
+circpad_machine_event_circ_has_no_streams(origin_circuit_t *circ)
+{
+ circpad_shutdown_old_machines(circ);
+ circpad_add_matching_machines(circ);
+}
+
+/**
+ * Verify that padding is coming from the expected hop.
+ *
+ * Returns true if from_hop matches the target hop from
+ * one of our padding machines.
+ *
+ * Returns false if we're not an origin circuit, or if from_hop
+ * does not match one of the padding machines.
+ */
+bool
+circpad_padding_is_from_expected_hop(circuit_t *circ,
+ crypt_path_t *from_hop)
+{
+ crypt_path_t *target_hop = NULL;
+ if (!CIRCUIT_IS_ORIGIN(circ))
+ return 0;
+
+ FOR_EACH_CIRCUIT_MACHINE_BEGIN(i) {
+ /* We have to check padding_machine and not padding_info/active
+ * machines here because padding may arrive after we shut down a
+ * machine. The info is gone, but the padding_machine waits
+ * for the padding_negotiated response to come back. */
+ if (!circ->padding_machine[i])
+ continue;
+
+ target_hop = circuit_get_cpath_hop(TO_ORIGIN_CIRCUIT(circ),
+ circ->padding_machine[i]->target_hopnum);
+
+ if (target_hop == from_hop)
+ return 1;
+ } FOR_EACH_CIRCUIT_MACHINE_END;
+
+ return 0;
+}
+
+/**
+ * Deliver circpad events for an "unrecognized cell".
+ *
+ * Unrecognized cells are sent to relays and are forwarded
+ * onto the next hop of their circuits. Unrecognized cells
+ * are by definition not padding. We need to tell relay-side
+ * state machines that a non-padding cell was sent or received,
+ * depending on the direction, so they can update their histograms
+ * and decide to pad or not.
+ */
+void
+circpad_deliver_unrecognized_cell_events(circuit_t *circ,
+ cell_direction_t dir)
+{
+ // We should never see unrecognized cells at origin.
+ // Our caller emits a warn when this happens.
+ if (CIRCUIT_IS_ORIGIN(circ)) {
+ return;
+ }
+
+ if (dir == CELL_DIRECTION_OUT) {
+ /* When direction is out (away from origin), then we received non-padding
+ cell coming from the origin to us. */
+ circpad_cell_event_nonpadding_received(circ);
+ } else if (dir == CELL_DIRECTION_IN) {
+ /* It's in and not origin, so the cell is going away from us.
+ * So we are relaying a non-padding cell towards the origin. */
+ circpad_cell_event_nonpadding_sent(circ);
+ }
+}
+
+/**
+ * Deliver circpad events for "recognized" relay cells.
+ *
+ * Recognized cells are destined for this hop, either client or middle.
+ * Check if this is a padding cell or not, and send the appropiate
+ * received event.
+ */
+void
+circpad_deliver_recognized_relay_cell_events(circuit_t *circ,
+ uint8_t relay_command,
+ crypt_path_t *layer_hint)
+{
+ /* Padding negotiate cells are ignored by the state machines
+ * for simplicity. */
+ if (relay_command == RELAY_COMMAND_PADDING_NEGOTIATE ||
+ relay_command == RELAY_COMMAND_PADDING_NEGOTIATED) {
+ return;
+ }
+
+ if (relay_command == RELAY_COMMAND_DROP) {
+ rep_hist_padding_count_read(PADDING_TYPE_DROP);
+
+ if (CIRCUIT_IS_ORIGIN(circ)) {
+ if (circpad_padding_is_from_expected_hop(circ, layer_hint)) {
+ circuit_read_valid_data(TO_ORIGIN_CIRCUIT(circ), 0);
+ } else {
+ /* This is unexpected padding. Ignore it for now. */
+ return;
+ }
+ }
+
+ /* The cell should be recognized by now, which means that we are on the
+ destination, which means that we received a padding cell. We might be
+ the client or the Middle node, still, because leaky-pipe. */
+ circpad_cell_event_padding_received(circ);
+ log_fn(LOG_INFO, LD_CIRC, "Got padding cell on %s circuit %u.",
+ CIRCUIT_IS_ORIGIN(circ) ? "origin" : "non-origin",
+ CIRCUIT_IS_ORIGIN(circ) ?
+ TO_ORIGIN_CIRCUIT(circ)->global_identifier : 0);
+ } else {
+ /* We received a non-padding cell on the edge */
+ circpad_cell_event_nonpadding_received(circ);
+ }
+}
+
+/**
+ * Deliver circpad events for relay cells sent from us.
+ *
+ * If this is a padding cell, update our padding stats
+ * and deliver the event. Otherwise just deliver the event.
+ */
+void
+circpad_deliver_sent_relay_cell_events(circuit_t *circ,
+ uint8_t relay_command)
+{
+ /* Padding negotiate cells are ignored by the state machines
+ * for simplicity. */
+ if (relay_command == RELAY_COMMAND_PADDING_NEGOTIATE ||
+ relay_command == RELAY_COMMAND_PADDING_NEGOTIATED) {
+ return;
+ }
+
+ /* RELAY_COMMAND_DROP is the multi-hop (aka circuit-level) padding cell in
+ * tor. (CELL_PADDING is a channel-level padding cell, which is not relayed
+ * or processed here) */
+ if (relay_command == RELAY_COMMAND_DROP) {
+ /* Optimization: The event for RELAY_COMMAND_DROP is sent directly
+ * from circpad_send_padding_cell_for_callback(). This is to avoid
+ * putting a cell_t and a relay_header_t on the stack repeatedly
+ * if we decide to send a long train of padidng cells back-to-back
+ * with 0 delay. So we do nothing here. */
+ return;
+ } else {
+ /* This is a non-padding cell sent from the client or from
+ * this node. */
+ circpad_cell_event_nonpadding_sent(circ);
+ }
+}
+
+/**
+ * Initialize the states array for a circpad machine.
+ */
+void
+circpad_machine_states_init(circpad_machine_spec_t *machine,
+ circpad_statenum_t num_states)
+{
+ if (BUG(num_states > CIRCPAD_MAX_MACHINE_STATES)) {
+ num_states = CIRCPAD_MAX_MACHINE_STATES;
+ }
+
+ machine->num_states = num_states;
+ machine->states = tor_malloc_zero(sizeof(circpad_state_t)*num_states);
+
+ /* Initialize the default next state for all events to
+ * "ignore" -- if events aren't specified, they are ignored. */
+ for (circpad_statenum_t s = 0; s < num_states; s++) {
+ for (int e = 0; e < CIRCPAD_NUM_EVENTS; e++) {
+ machine->states[s].next_state[e] = CIRCPAD_STATE_IGNORE;
+ }
+ }
+}
+
+static void
+circpad_setup_machine_on_circ(circuit_t *on_circ,
+ const circpad_machine_spec_t *machine)
+{
+ if (CIRCUIT_IS_ORIGIN(on_circ) && !machine->is_origin_side) {
+ log_fn(LOG_WARN, LD_BUG,
+ "Can't set up non-origin machine on origin circuit!");
+ return;
+ }
+
+ if (!CIRCUIT_IS_ORIGIN(on_circ) && machine->is_origin_side) {
+ log_fn(LOG_WARN, LD_BUG,
+ "Can't set up origin machine on non-origin circuit!");
+ return;
+ }
+
+ tor_assert_nonfatal(on_circ->padding_machine[machine->machine_index]
+ == NULL);
+ tor_assert_nonfatal(on_circ->padding_info[machine->machine_index] == NULL);
+
+ on_circ->padding_info[machine->machine_index] =
+ circpad_circuit_machineinfo_new(on_circ, machine->machine_index);
+ on_circ->padding_machine[machine->machine_index] = machine;
+}
+
+/* These padding machines are only used for tests pending #28634. */
+#ifdef TOR_UNIT_TESTS
+static void
+circpad_circ_client_machine_init(void)
+{
+ circpad_machine_spec_t *circ_client_machine
+ = tor_malloc_zero(sizeof(circpad_machine_spec_t));
+
+ // XXX: Better conditions for merge.. Or disable this machine in
+ // merge?
+ circ_client_machine->conditions.min_hops = 2;
+ circ_client_machine->conditions.state_mask =
+ CIRCPAD_CIRC_BUILDING|CIRCPAD_CIRC_OPENED|CIRCPAD_CIRC_HAS_RELAY_EARLY;
+ circ_client_machine->conditions.purpose_mask = CIRCPAD_PURPOSE_ALL;
+
+ circ_client_machine->target_hopnum = 2;
+ circ_client_machine->is_origin_side = 1;
+
+ /* Start, gap, burst */
+ circpad_machine_states_init(circ_client_machine, 3);
+
+ circ_client_machine->states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ circ_client_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+ circ_client_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ /* If we are in burst state, and we send a non-padding cell, then we cancel
+ the timer for the next padding cell:
+ We dont want to send fake extends when actual extends are going on */
+ circ_client_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_NONPADDING_SENT] = CIRCPAD_STATE_CANCEL;
+
+ circ_client_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_BINS_EMPTY] = CIRCPAD_STATE_END;
+
+ circ_client_machine->states[CIRCPAD_STATE_BURST].token_removal =
+ CIRCPAD_TOKEN_REMOVAL_CLOSEST;
+
+ // FIXME: Tune this histogram
+ circ_client_machine->states[CIRCPAD_STATE_BURST].histogram_len = 2;
+ circ_client_machine->states[CIRCPAD_STATE_BURST].start_usec = 500;
+ circ_client_machine->states[CIRCPAD_STATE_BURST].range_usec = 1000000;
+ /* We have 5 tokens in the histogram, which means that all circuits will look
+ * like they have 7 hops (since we start this machine after the second hop,
+ * and tokens are decremented for any valid hops, and fake extends are
+ * used after that -- 2+5==7). */
+ circ_client_machine->states[CIRCPAD_STATE_BURST].histogram[0] = 5;
+ circ_client_machine->states[CIRCPAD_STATE_BURST].histogram_total_tokens = 5;
+
+ circ_client_machine->machine_num = smartlist_len(origin_padding_machines);
+ smartlist_add(origin_padding_machines, circ_client_machine);
+}
+
+static void
+circpad_circ_responder_machine_init(void)
+{
+ circpad_machine_spec_t *circ_responder_machine
+ = tor_malloc_zero(sizeof(circpad_machine_spec_t));
+
+ /* Shut down the machine after we've sent enough packets */
+ circ_responder_machine->should_negotiate_end = 1;
+
+ /* The relay-side doesn't care what hopnum it is, but for consistency,
+ * let's match the client */
+ circ_responder_machine->target_hopnum = 2;
+ circ_responder_machine->is_origin_side = 0;
+
+ /* Start, gap, burst */
+ circpad_machine_states_init(circ_responder_machine, 3);
+
+ /* This is the settings of the state machine. In the future we are gonna
+ serialize this into the consensus or the torrc */
+
+ /* We transition to the burst state on padding receive and on non-padding
+ * recieve */
+ circ_responder_machine->states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
+ circ_responder_machine->states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ /* Inside the burst state we _stay_ in the burst state when a non-padding
+ * is sent */
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_NONPADDING_SENT] = CIRCPAD_STATE_BURST;
+
+ /* Inside the burst state we transition to the gap state when we receive a
+ * padding cell */
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_GAP;
+
+ /* These describe the padding charasteristics when in burst state */
+
+ /* use_rtt_estimate tries to estimate how long padding cells take to go from
+ C->M, and uses that as what as the base of the histogram */
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].use_rtt_estimate = 1;
+ /* The histogram is 2 bins: an empty one, and infinity */
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].histogram_len = 2;
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].start_usec = 5000;
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].range_usec = 1000000;
+ /* During burst state we wait forever for padding to arrive.
+
+ We are waiting for a padding cell from the client to come in, so that we
+ respond, and we immitate how extend looks like */
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].histogram[0] = 0;
+ // Only infinity bin:
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].histogram[1] = 1;
+ circ_responder_machine->states[CIRCPAD_STATE_BURST].
+ histogram_total_tokens = 1;
+
+ /* From the gap state, we _stay_ in the gap state, when we receive padding
+ * or non padding */
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].
+ next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_GAP;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_GAP;
+
+ /* And from the gap state, we go to the end, when the bins are empty or a
+ * non-padding cell is sent */
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].
+ next_state[CIRCPAD_EVENT_BINS_EMPTY] = CIRCPAD_STATE_END;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].
+ next_state[CIRCPAD_EVENT_NONPADDING_SENT] = CIRCPAD_STATE_END;
+
+ // FIXME: Tune this histogram
+
+ /* The gap state is the delay you wait after you receive a padding cell
+ before you send a padding response */
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].use_rtt_estimate = 1;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram_len = 6;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].start_usec = 5000;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].range_usec = 1000000;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram[0] = 0;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram[1] = 1;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram[2] = 2;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram[3] = 2;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram[4] = 1;
+ /* Total number of tokens */
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].histogram_total_tokens = 6;
+ circ_responder_machine->states[CIRCPAD_STATE_GAP].token_removal =
+ CIRCPAD_TOKEN_REMOVAL_CLOSEST_USEC;
+
+ circ_responder_machine->machine_num = smartlist_len(relay_padding_machines);
+ smartlist_add(relay_padding_machines, circ_responder_machine);
+}
+#endif
+
+/**
+ * Initialize all of our padding machines.
+ *
+ * This is called at startup. It sets up some global machines, and then
+ * loads some from torrc, and from the tor consensus.
+ */
+void
+circpad_machines_init(void)
+{
+ tor_assert_nonfatal(origin_padding_machines == NULL);
+ tor_assert_nonfatal(relay_padding_machines == NULL);
+
+ origin_padding_machines = smartlist_new();
+ relay_padding_machines = smartlist_new();
+
+ // TODO: Parse machines from consensus and torrc
+#ifdef TOR_UNIT_TESTS
+ circpad_circ_client_machine_init();
+ circpad_circ_responder_machine_init();
+#endif
+}
+
+/**
+ * Free our padding machines
+ */
+void
+circpad_machines_free(void)
+{
+ if (origin_padding_machines) {
+ SMARTLIST_FOREACH(origin_padding_machines,
+ circpad_machine_spec_t *,
+ m, tor_free(m->states); tor_free(m));
+ smartlist_free(origin_padding_machines);
+ }
+
+ if (relay_padding_machines) {
+ SMARTLIST_FOREACH(relay_padding_machines,
+ circpad_machine_spec_t *,
+ m, tor_free(m->states); tor_free(m));
+ smartlist_free(relay_padding_machines);
+ }
+}
+
+/**
+ * Check the Protover info to see if a node supports padding.
+ */
+static bool
+circpad_node_supports_padding(const node_t *node)
+{
+ if (node->rs) {
+ log_fn(LOG_INFO, LD_CIRC, "Checking padding: %s",
+ node->rs->pv.supports_padding ? "supported" : "unsupported");
+ return node->rs->pv.supports_padding;
+ }
+
+ log_fn(LOG_INFO, LD_CIRC, "Empty routerstatus in padding check");
+ return 0;
+}
+
+/**
+ * Get a node_t for the nth hop in our circuit, starting from 1.
+ *
+ * Returns node_t from the consensus for that hop, if it is opened.
+ * Otherwise returns NULL.
+ */
+static const node_t *
+circuit_get_nth_node(origin_circuit_t *circ, int hop)
+{
+ crypt_path_t *iter = circuit_get_cpath_hop(circ, hop);
+
+ if (!iter || iter->state != CPATH_STATE_OPEN)
+ return NULL;
+
+ return node_get_by_id(iter->extend_info->identity_digest);
+}
+
+/**
+ * Return true if a particular circuit supports padding
+ * at the desired hop.
+ */
+static bool
+circpad_circuit_supports_padding(origin_circuit_t *circ,
+ int target_hopnum)
+{
+ const node_t *hop;
+
+ if (!(hop = circuit_get_nth_node(circ, target_hopnum))) {
+ return 0;
+ }
+
+ return circpad_node_supports_padding(hop);
+}
+
+/**
+ * Try to negotiate padding.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+signed_error_t
+circpad_negotiate_padding(origin_circuit_t *circ,
+ circpad_machine_num_t machine,
+ uint8_t target_hopnum,
+ uint8_t command)
+{
+ circpad_negotiate_t type;
+ cell_t cell;
+ ssize_t len;
+
+ /* Check that the target hop lists support for padding in
+ * its ProtoVer fields */
+ if (!circpad_circuit_supports_padding(circ, target_hopnum)) {
+ return -1;
+ }
+
+ memset(&cell, 0, sizeof(cell_t));
+ memset(&type, 0, sizeof(circpad_negotiate_t));
+ // This gets reset to RELAY_EARLY appropriately by
+ // relay_send_command_from_edge_. At least, it looks that way.
+ // QQQ-MP-AP: Verify that.
+ cell.command = CELL_RELAY;
+
+ circpad_negotiate_set_command(&type, command);
+ circpad_negotiate_set_version(&type, 0);
+ circpad_negotiate_set_machine_type(&type, machine);
+
+ if ((len = circpad_negotiate_encode(cell.payload, CELL_PAYLOAD_SIZE,
+ &type)) < 0)
+ return -1;
+
+ log_fn(LOG_INFO,LD_CIRC, "Negotiating padding on circuit %u",
+ circ->global_identifier);
+
+ return circpad_send_command_to_hop(circ, target_hopnum,
+ RELAY_COMMAND_PADDING_NEGOTIATE,
+ cell.payload, len);
+}
+
+/**
+ * Try to negotiate padding.
+ *
+ * Returns 1 if successful (or already set up), 0 otherwise.
+ */
+bool
+circpad_padding_negotiated(circuit_t *circ,
+ circpad_machine_num_t machine,
+ uint8_t command,
+ uint8_t response)
+{
+ circpad_negotiated_t type;
+ cell_t cell;
+ ssize_t len;
+
+ memset(&cell, 0, sizeof(cell_t));
+ memset(&type, 0, sizeof(circpad_negotiated_t));
+ // This gets reset to RELAY_EARLY appropriately by
+ // relay_send_command_from_edge_. At least, it looks that way.
+ // QQQ-MP-AP: Verify that.
+ cell.command = CELL_RELAY;
+
+ circpad_negotiated_set_command(&type, command);
+ circpad_negotiated_set_response(&type, response);
+ circpad_negotiated_set_version(&type, 0);
+ circpad_negotiated_set_machine_type(&type, machine);
+
+ if ((len = circpad_negotiated_encode(cell.payload, CELL_PAYLOAD_SIZE,
+ &type)) < 0)
+ return 0;
+
+ /* Use relay_send because we're from the middle to the origin. We don't
+ * need to specify a target hop or layer_hint. */
+ return relay_send_command_from_edge(0, circ,
+ RELAY_COMMAND_PADDING_NEGOTIATED,
+ (void*)cell.payload,
+ (size_t)len, NULL) == 0;
+}
+
+/**
+ * Parse and react to a padding_negotiate cell.
+ *
+ * This is called at the middle node upon receipt of the client's choice of
+ * state machine, so that it can use the requested state machine index, if
+ * it is available.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+signed_error_t
+circpad_handle_padding_negotiate(circuit_t *circ, cell_t *cell)
+{
+ int retval = 0;
+ circpad_negotiate_t *negotiate;
+
+ if (CIRCUIT_IS_ORIGIN(circ)) {
+ log_fn(LOG_WARN, LD_PROTOCOL,
+ "Padding negotiate cell unsupported at origin.");
+ return -1;
+ }
+
+ if (circpad_negotiate_parse(&negotiate, cell->payload+RELAY_HEADER_SIZE,
+ CELL_PAYLOAD_SIZE-RELAY_HEADER_SIZE) < 0) {
+ log_fn(LOG_WARN, LD_CIRC,
+ "Received malformed PADDING_NEGOTIATE cell; dropping.");
+ return -1;
+ }
+
+ if (negotiate->command == CIRCPAD_COMMAND_STOP) {
+ /* Free the machine corresponding to this machine type */
+ free_circ_machineinfos_with_machine_num(circ, negotiate->machine_type);
+ log_fn(LOG_WARN, LD_CIRC,
+ "Received circuit padding stop command for unknown machine.");
+ goto err;
+ } else if (negotiate->command == CIRCPAD_COMMAND_START) {
+ SMARTLIST_FOREACH_BEGIN(relay_padding_machines,
+ const circpad_machine_spec_t *, m) {
+ if (m->machine_num == negotiate->machine_type) {
+ circpad_setup_machine_on_circ(circ, m);
+ goto done;
+ }
+ } SMARTLIST_FOREACH_END(m);
+ }
+
+ err:
+ retval = -1;
+
+ done:
+ circpad_padding_negotiated(circ, negotiate->machine_type,
+ negotiate->command,
+ (retval == 0) ? CIRCPAD_RESPONSE_OK : CIRCPAD_RESPONSE_ERR);
+ circpad_negotiate_free(negotiate);
+
+ return retval;
+}
+
+/**
+ * Parse and react to a padding_negotiated cell.
+ *
+ * This is called at the origin upon receipt of the middle's response
+ * to our choice of state machine.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+signed_error_t
+circpad_handle_padding_negotiated(circuit_t *circ, cell_t *cell,
+ crypt_path_t *layer_hint)
+{
+ circpad_negotiated_t *negotiated;
+
+ if (!CIRCUIT_IS_ORIGIN(circ)) {
+ log_fn(LOG_WARN, LD_PROTOCOL,
+ "Padding negotiated cell unsupported at non-origin.");
+ return -1;
+ }
+
+ /* Verify this came from the expected hop */
+ if (!circpad_padding_is_from_expected_hop(circ, layer_hint)) {
+ log_fn(LOG_WARN, LD_PROTOCOL,
+ "Padding negotiated cell from wrong hop!");
+ return -1;
+ }
+
+ if (circpad_negotiated_parse(&negotiated, cell->payload+RELAY_HEADER_SIZE,
+ CELL_PAYLOAD_SIZE-RELAY_HEADER_SIZE) < 0) {
+ log_fn(LOG_WARN, LD_CIRC,
+ "Received malformed PADDING_NEGOTIATED cell; "
+ "dropping.");
+ return -1;
+ }
+
+ if (negotiated->command == CIRCPAD_COMMAND_STOP) {
+ /* There may not be a padding_info here if we shut down the
+ * machine in circpad_shutdown_old_machines(). Or, if
+ * circpad_add_matching_matchines() added a new machine,
+ * there may be a padding_machine for a different machine num
+ * than this response. */
+ free_circ_machineinfos_with_machine_num(circ, negotiated->machine_type);
+ } else if (negotiated->command == CIRCPAD_COMMAND_START &&
+ negotiated->response == CIRCPAD_RESPONSE_ERR) {
+ // This can happen due to consensus drift.. free the machines
+ // and be sad
+ free_circ_machineinfos_with_machine_num(circ, negotiated->machine_type);
+ TO_ORIGIN_CIRCUIT(circ)->padding_negotiation_failed = 1;
+ log_fn(LOG_INFO, LD_CIRC,
+ "Middle node did not accept our padding request.");
+ }
+
+ circpad_negotiated_free(negotiated);
+ return 0;
+}
+
+/* Serialization */
+// TODO: Should we use keyword=value here? Are there helpers for that?
+#if 0
+static void
+circpad_state_serialize(const circpad_state_t *state,
+ smartlist_t *chunks)
+{
+ smartlist_add_asprintf(chunks, " %u", state->histogram[0]);
+ for (int i = 1; i < state->histogram_len; i++) {
+ smartlist_add_asprintf(chunks, ",%u",
+ state->histogram[i]);
+ }
+
+ smartlist_add_asprintf(chunks, " 0x%x",
+ state->transition_cancel_events);
+
+ for (int i = 0; i < CIRCPAD_NUM_STATES; i++) {
+ smartlist_add_asprintf(chunks, ",0x%x",
+ state->transition_events[i]);
+ }
+
+ smartlist_add_asprintf(chunks, " %u %u",
+ state->use_rtt_estimate,
+ state->token_removal);
+}
+
+char *
+circpad_machine_spec_to_string(const circpad_machine_spec_t *machine)
+{
+ smartlist_t *chunks = smartlist_new();
+ char *out;
+ (void)machine;
+
+ circpad_state_serialize(&machine->start, chunks);
+ circpad_state_serialize(&machine->gap, chunks);
+ circpad_state_serialize(&machine->burst, chunks);
+
+ out = smartlist_join_strings(chunks, "", 0, NULL);
+
+ SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
+ smartlist_free(chunks);
+ return out;
+}
+
+// XXX: Writeme
+const circpad_machine_spec_t *
+circpad_string_to_machine(const char *str)
+{
+ (void)str;
+ return NULL;
+}
+
+#endif
diff --git a/src/core/or/circuitpadding.h b/src/core/or/circuitpadding.h
new file mode 100644
index 0000000000..92fd4fc2d5
--- /dev/null
+++ b/src/core/or/circuitpadding.h
@@ -0,0 +1,696 @@
+/*
+ * Copyright (c) 2017-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file circuitpadding.h
+ * \brief Header file for circuitpadding.c.
+ **/
+
+#ifndef TOR_CIRCUITPADDING_H
+#define TOR_CIRCUITPADDING_H
+
+#include "src/trunnel/circpad_negotiation.h"
+#include "lib/evloop/timers.h"
+
+struct circuit_t;
+struct origin_circuit_t;
+struct cell_t;
+
+/**
+ * Signed error return with the specific property that negative
+ * values mean error codes of various semantics, 0 means success,
+ * and positive values are unused.
+ *
+ * XXX: Tor uses this concept a lot but just calls it int. Should we move
+ * this somewhere centralized? Where?
+ */
+typedef int signed_error_t;
+
+/**
+ * These constants specify the types of events that can cause
+ * transitions between state machine states.
+ *
+ * Note that SENT and RECV are relative to this endpoint. For
+ * relays, SENT means packets destined towards the client and
+ * RECV means packets destined towards the relay. On the client,
+ * SENT means packets destined towards the relay, where as RECV
+ * means packets destined towards the client.
+ */
+typedef enum {
+ /* A non-padding cell was received. */
+ CIRCPAD_EVENT_NONPADDING_RECV = 0,
+ /* A non-padding cell was sent. */
+ CIRCPAD_EVENT_NONPADDING_SENT = 1,
+ /* A padding cell (RELAY_COMMAND_DROP) was sent. */
+ CIRCPAD_EVENT_PADDING_SENT = 2,
+ /* A padding cell was received. */
+ CIRCPAD_EVENT_PADDING_RECV = 3,
+ /* We tried to schedule padding but we ended up picking the infinity bin
+ * which means that padding was delayed infinitely */
+ CIRCPAD_EVENT_INFINITY = 4,
+ /* All histogram bins are empty (we are out of tokens) */
+ CIRCPAD_EVENT_BINS_EMPTY = 5,
+ /* just a counter of the events above */
+ CIRCPAD_EVENT_LENGTH_COUNT = 6
+} circpad_event_t;
+#define CIRCPAD_NUM_EVENTS ((int)CIRCPAD_EVENT_LENGTH_COUNT+1)
+
+/** Boolean type that says if we decided to transition states or not */
+typedef enum {
+ CIRCPAD_STATE_UNCHANGED = 0,
+ CIRCPAD_STATE_CHANGED = 1
+} circpad_decision_t;
+
+/** The type for the things in histogram bins (aka tokens) */
+typedef uint32_t circpad_hist_token_t;
+
+/** The type for histogram indexes (needs to be negative for errors) */
+typedef int8_t circpad_hist_index_t;
+
+/** The type for absolute time, from monotime_absolute_usec() */
+typedef uint64_t circpad_time_t;
+
+/** The type for timer delays, in microseconds */
+typedef uint32_t circpad_delay_t;
+
+/**
+ * An infinite padding cell delay means don't schedule any padding --
+ * simply wait until a different event triggers a transition.
+ *
+ * This means that the maximum delay we can scedule is UINT32_MAX-1
+ * microseconds, or about 4300 seconds (1.25 hours).
+ * XXX: Is this enough if we want to simulate light, intermittent
+ * activity on an onion service?
+ */
+#define CIRCPAD_DELAY_INFINITE (UINT32_MAX)
+
+/**
+ * Macro to clarify when we're checking the infinity bin.
+ *
+ * Works with either circpad_state_t or circpad_machine_state_t
+ */
+#define CIRCPAD_INFINITY_BIN(mi) ((mi)->histogram_len-1)
+
+/**
+ * These constants form a bitfield that specifies when a state machine
+ * should be applied to a circuit.
+ *
+ * If any of these elements is set, then the circuit will be tested against
+ * that specific condition. If an element is unset, then we don't test it.
+ * (E.g. If neither NO_STREAMS or STREAMS are set, then we will not care
+ * whether a circuit has streams attached when we apply a state machine)
+ *
+ * The helper function circpad_circuit_state() converts circuit state
+ * flags into this more compact representation.
+ */
+typedef enum {
+ /* Only apply machine if the circuit is still building */
+ CIRCPAD_CIRC_BUILDING = 1<<0,
+ /* Only apply machine if the circuit is open */
+ CIRCPAD_CIRC_OPENED = 1<<1,
+ /* Only apply machine if the circuit has no attached streams */
+ CIRCPAD_CIRC_NO_STREAMS = 1<<2,
+ /* Only apply machine if the circuit has attached streams */
+ CIRCPAD_CIRC_STREAMS = 1<<3,
+ /* Only apply machine if the circuit still allows RELAY_EARLY cells */
+ CIRCPAD_CIRC_HAS_RELAY_EARLY = 1<<4,
+ /* Only apply machine if the circuit has depleted its RELAY_EARLY cells
+ * allowance. */
+ CIRCPAD_CIRC_HAS_NO_RELAY_EARLY = 1<<5
+} circpad_circuit_state_t;
+
+/** Bitmask that says "apply this machine to all states" */
+#define CIRCPAD_STATE_ALL \
+ (CIRCPAD_CIRC_BUILDING|CIRCPAD_CIRC_OPENED| \
+ CIRCPAD_CIRC_STREAMS|CIRCPAD_CIRC_NO_STREAMS| \
+ CIRCPAD_CIRC_HAS_RELAY_EARLY|CIRCPAD_CIRC_HAS_NO_RELAY_EARLY)
+
+/**
+ * A compact circuit purpose bitfield mask that allows us to compactly
+ * specify which circuit purposes a machine should apply to.
+ *
+ * The helper function circpad_circ_purpose_to_mask() converts circuit
+ * purposes into bit positions in this bitmask.
+ */
+typedef uint32_t circpad_purpose_mask_t;
+
+/** Bitmask that says "apply this machine to all purposes". */
+#define CIRCPAD_PURPOSE_ALL (0xFFFFFFFF)
+
+/**
+ * This type specifies all of the conditions that must be met before
+ * a client decides to initiate padding on a circuit.
+ *
+ * A circuit must satisfy every sub-field in this type in order
+ * to be considered to match the conditions.
+ */
+typedef struct circpad_machine_conditions_t {
+ /** Only apply the machine *if* the circuit has at least this many hops */
+ unsigned min_hops : 3;
+
+ /** Only apply the machine *if* vanguards are enabled */
+ unsigned requires_vanguards : 1;
+
+ /** Only apply the machine *if* the circuit's state matches any of
+ * the bits set in this bitmask. */
+ circpad_circuit_state_t state_mask;
+
+ /** Only apply a machine *if* the circuit's purpose matches one
+ * of the bits set in this bitmask */
+ circpad_purpose_mask_t purpose_mask;
+
+} circpad_machine_conditions_t;
+
+/**
+ * Token removal strategy options.
+ *
+ * The WTF-PAD histograms are meant to specify a target distribution to shape
+ * traffic towards. This is accomplished by removing tokens from the histogram
+ * when either padding or non-padding cells are sent.
+ *
+ * When we see a non-padding cell at a particular time since the last cell, you
+ * remove a token from the corresponding delay bin. These flags specify
+ * which bin to choose if that bin is already empty.
+ */
+typedef enum {
+ /** Don't remove any tokens */
+ CIRCPAD_TOKEN_REMOVAL_NONE = 0,
+ /**
+ * Remove from the first non-zero higher bin index when current is zero.
+ * This is the recommended strategy from the Adaptive Padding paper. */
+ CIRCPAD_TOKEN_REMOVAL_HIGHER = 1,
+ /** Remove from the first non-zero lower bin index when current is empty. */
+ CIRCPAD_TOKEN_REMOVAL_LOWER = 2,
+ /** Remove from the closest non-zero bin index when current is empty. */
+ CIRCPAD_TOKEN_REMOVAL_CLOSEST = 3,
+ /** Remove from the closest bin by time value (since bins are
+ * exponentially spaced). */
+ CIRCPAD_TOKEN_REMOVAL_CLOSEST_USEC = 4,
+ /** Only remove from the exact bin corresponding to this delay. If
+ * the bin is 0, simply do nothing. Don't pick another bin. */
+ CIRCPAD_TOKEN_REMOVAL_EXACT = 5
+} circpad_removal_t;
+
+/**
+ * Distribution types supported by circpad_distribution_sample().
+ *
+ * These can be used instead of histograms for the inter-packet
+ * timing distribution, or to specify a distribution on the number
+ * of cells that can be sent while in a specific state of the state
+ * machine. */
+typedef enum {
+ CIRCPAD_DIST_NONE = 0,
+ CIRCPAD_DIST_UNIFORM = 1,
+ CIRCPAD_DIST_LOGISTIC = 2,
+ CIRCPAD_DIST_LOG_LOGISTIC = 3,
+ CIRCPAD_DIST_GEOMETRIC = 4,
+ CIRCPAD_DIST_WEIBULL = 5,
+ CIRCPAD_DIST_PARETO = 6
+} circpad_distribution_type_t;
+
+/**
+ * Distribution information.
+ *
+ * This type specifies a specific distribution above, as well as
+ * up to two parameters for that distribution. The specific
+ * per-distribution meaning of these parameters is specified
+ * in circpad_distribution_sample().
+ */
+typedef struct circpad_distribution_t {
+ circpad_distribution_type_t type;
+ double param1;
+ double param2;
+} circpad_distribution_t;
+
+/** State number type. Represents current state of state machine. */
+typedef uint16_t circpad_statenum_t;
+#define CIRCPAD_STATENUM_MAX (UINT16_MAX)
+
+/** A histogram is used to sample padding delays given a machine state. This
+ * constant defines the maximum histogram width (i.e. the max number of bins)
+ *
+ * Each histogram bin is twice as large as the previous. Two exceptions: The
+ * first bin has zero width (which means that minimum delay is applied to the
+ * next padding cell), and the last bin (infinity bin) has infinite width
+ * (which means that the next padding cell will be delayed infinitely). */
+#define CIRCPAD_MAX_HISTOGRAM_LEN (sizeof(circpad_delay_t)*8 + 1)
+
+/**
+ * A state of a padding state machine. The information here are immutable and
+ * represent the initial form of the state; it does not get updated as things
+ * happen. The mutable information that gets updated in runtime are carried in
+ * a circpad_machine_state_t.
+ *
+ * This struct describes the histograms and parameters of a single
+ * state in the adaptive padding machine. Instances of this struct
+ * exist in global circpad machine definitions that come from torrc
+ * or the consensus.
+ */
+typedef struct circpad_state_t {
+ /** If a histogram is used for this state, this specifies the number of bins
+ * of this histogram. Histograms must have at least 2 bins.
+ *
+ * If a delay probability distribution is used for this state, this is set
+ * to 0. */
+ circpad_hist_index_t histogram_len;
+ /** The histogram itself: an array of uint16s of tokens, whose
+ * widths are exponentially spaced, in microseconds */
+ circpad_hist_token_t histogram[CIRCPAD_MAX_HISTOGRAM_LEN];
+ /** Total number of tokens in this histogram. This is a constant and is *not*
+ * decremented every time we spend a token. It's used for initializing and
+ * refilling the histogram. */
+ uint32_t histogram_total_tokens;
+
+ /** Minimum padding delay of this state in microseconds.
+ *
+ * If histograms are used, this is the left (and right) bound of the first
+ * bin (since it has zero width).
+ *
+ * If a delay probability distribution is used, this represents the minimum
+ * delay we can sample from the distribution.
+ */
+ circpad_delay_t start_usec;
+
+ /** If histograms are used, this is the width of the whole histogram in
+ * microseconds, and it's used to calculate individual bin width.
+ *
+ * If a delay probability distribution is used, this is used as the max
+ * delay we can sample from the distribution.
+ */
+ circpad_delay_t range_usec;
+
+ /**
+ * Represents a delay probability distribution (aka IAT distribution). It's a
+ * parametrized way of encoding inter-packet delay information in
+ * microseconds. It can be used instead of histograms.
+ *
+ * If it is used, token_removal below must be set to
+ * CIRCPAD_TOKEN_REMOVAL_NONE.
+ *
+ * Start_usec, range_sec, and rtt_estimates are still applied to the
+ * results of sampling from this distribution (range_sec is used as a max).
+ */
+ circpad_distribution_t iat_dist;
+
+ /**
+ * The length dist is a parameterized way of encoding how long this
+ * state machine runs in terms of sent padding cells or all
+ * sent cells. Values are sampled from this distribution, clamped
+ * to max_len, and then start_len is added to that value.
+ *
+ * It may be specified instead of or in addition to
+ * the infinity bins and bins empty conditions. */
+ circpad_distribution_t length_dist;
+ /** A minimum length value, added to the output of length_dist */
+ uint16_t start_length;
+ /** A cap on the length value that can be sampled from the length_dist */
+ uint64_t max_length;
+
+ /** Should we decrement length when we see a nonpadding packet?
+ * XXX: Are there any machines that actually want to set this to 0? There may
+ * not be. OTOH, it's only a bit.. */
+ unsigned length_includes_nonpadding : 1;
+
+ /**
+ * This is an array that specifies the next state to transition to upon
+ * receipt an event matching the indicated array index.
+ *
+ * This aborts our scheduled packet and switches to the state
+ * corresponding to the index of the array. Tokens are filled upon
+ * this transition.
+ *
+ * States are allowed to transition to themselves, which means re-schedule
+ * a new padding timer. They are also allowed to temporarily "transition"
+ * to the "IGNORE" and "CANCEL" pseudo-states. See #defines below
+ * for details on state behavior and meaning.
+ */
+ circpad_statenum_t next_state[CIRCPAD_NUM_EVENTS];
+
+ /**
+ * If true, estimate the RTT from this relay to the exit/website and add that
+ * to start_usec for use as the histogram bin 0 start delay.
+ *
+ * Right now this is only supported for relay-side state machines.
+ */
+ unsigned use_rtt_estimate : 1;
+
+ /** This specifies the token removal strategy to use upon padding and
+ * non-padding activity. */
+ circpad_removal_t token_removal;
+} circpad_state_t;
+
+/**
+ * The start state for this machine.
+ *
+ * In the original WTF-PAD, this is only used for transition to/from
+ * the burst state. All other fields are not used. But to simplify the
+ * code we've made it a first-class state. This has no performance
+ * consequences, but may make naive serialization of the state machine
+ * large, if we're not careful about how we represent empty fields.
+ */
+#define CIRCPAD_STATE_START 0
+
+/**
+ * The burst state for this machine.
+ *
+ * In the original Adaptive Padding algorithm and in WTF-PAD
+ * (https://www.freehaven.net/anonbib/cache/ShWa-Timing06.pdf and
+ * https://www.cs.kau.se/pulls/hot/thebasketcase-wtfpad/), the burst
+ * state serves to detect bursts in traffic. This is done by using longer
+ * delays in its histogram, which represent the expected delays between
+ * bursts of packets in the target stream. If this delay expires without a
+ * real packet being sent, the burst state sends a padding packet and then
+ * immediately transitions to the gap state, which is used to generate
+ * a synthetic padding packet train. In this implementation, this transition
+ * needs to be explicitly specified in the burst state's transition events.
+ *
+ * Because of this flexibility, other padding mechanisms can transition
+ * between these two states arbitrarily, to encode other dynamics of
+ * target traffic.
+ */
+#define CIRCPAD_STATE_BURST 1
+
+/**
+ * The gap state for this machine.
+ *
+ * In the original Adaptive Padding algorithm and in WTF-PAD, the gap
+ * state serves to simulate an artificial packet train composed of padding
+ * packets. It does this by specifying much lower inter-packet delays than
+ * the burst state, and transitioning back to itself after padding is sent
+ * if these timers expire before real traffic is sent. If real traffic is
+ * sent, it transitions back to the burst state.
+ *
+ * Again, in this implementation, these transitions must be specified
+ * explicitly, and other transitions are also permitted.
+ */
+#define CIRCPAD_STATE_GAP 2
+
+/**
+ * End is a pseudo-state that causes the machine to go completely
+ * idle, and optionally get torn down (depending on the
+ * value of circpad_machine_spec_t.should_negotiate_end)
+ *
+ * End MUST NOT occupy a slot in the machine state array.
+ */
+#define CIRCPAD_STATE_END CIRCPAD_STATENUM_MAX
+
+/**
+ * "Ignore" is a pseudo-state that means "do not react to this
+ * event".
+ *
+ * "Ignore" MUST NOT occupy a slot in the machine state array.
+ */
+#define CIRCPAD_STATE_IGNORE (CIRCPAD_STATENUM_MAX-1)
+
+/**
+ * "Cancel" is a pseudo-state that means "cancel pending timers,
+ * but remain in your current state".
+ *
+ * Cancel MUST NOT occupy a slot in the machine state array.
+ */
+#define CIRCPAD_STATE_CANCEL (CIRCPAD_STATENUM_MAX-2)
+
+/**
+ * Since we have 3 pseudo-states, the max state array length is
+ * up to one less than cancel's statenum.
+ */
+#define CIRCPAD_MAX_MACHINE_STATES (CIRCPAD_STATE_CANCEL-1)
+
+/**
+ * Mutable padding machine info.
+ *
+ * This structure contains mutable information about a padding
+ * machine. The mutable information must be kept separate because
+ * it exists per-circuit, where as the machines themselves are global.
+ * This separation is done to conserve space in the circuit structure.
+ *
+ * This is the per-circuit state that changes regarding the global state
+ * machine. Some parts of it are optional (ie NULL).
+ *
+ * XXX: Play with layout to minimize space on x64 Linux (most common relay).
+ */
+typedef struct circpad_machine_state_t {
+ /** The callback pointer for the padding callbacks.
+ *
+ * These timers stick around the machineinfo until the machineinfo's circuit
+ * is closed, at which point the timer is cancelled. For this reason it's
+ * safe to assume that the machineinfo exists if this timer gets
+ * triggered. */
+ tor_timer_t *padding_timer;
+
+ /** The circuit for this machine */
+ struct circuit_t *on_circ;
+
+ /** A mutable copy of the histogram for the current state.
+ * NULL if remove_tokens is false for that state */
+ circpad_hist_token_t *histogram;
+ /** Length of the above histogram.
+ * XXX: This field *could* be removed at the expense of added
+ * complexity+overhead for reaching back into the immutable machine
+ * state every time we need to inspect the histogram. It's only a byte,
+ * though, so it seemed worth it.
+ */
+ circpad_hist_index_t histogram_len;
+ /** Remove token from this index upon sending padding */
+ circpad_hist_index_t chosen_bin;
+
+ /** Stop padding/transition if this many cells sent */
+ uint64_t state_length;
+#define CIRCPAD_STATE_LENGTH_INFINITE UINT64_MAX
+
+ /** A scaled count of padding packets sent, used to limit padding overhead.
+ * When this reaches UINT16_MAX, we cut it and nonpadding_sent in half. */
+ uint16_t padding_sent;
+ /** A scaled count of non-padding packets sent, used to limit padding
+ * overhead. When this reaches UINT16_MAX, we cut it and padding_sent in
+ * half. */
+ uint16_t nonpadding_sent;
+
+ /**
+ * EWMA estimate of the RTT of the circuit from this hop
+ * to the exit end, in microseconds. */
+ circpad_delay_t rtt_estimate_usec;
+
+ /**
+ * The last time we got an event relevant to estimating
+ * the RTT. Monotonic time in microseconds since system
+ * start.
+ */
+ circpad_time_t last_received_time_usec;
+
+ /**
+ * The time at which we scheduled a non-padding packet,
+ * or selected an infinite delay.
+ *
+ * Monotonic time in microseconds since system start.
+ * This is 0 if we haven't chosen a padding delay.
+ */
+ circpad_time_t padding_scheduled_at_usec;
+
+ /** What state is this machine in? */
+ circpad_statenum_t current_state;
+
+ /**
+ * True if we have scheduled a timer for padding.
+ *
+ * This is 1 if a timer is pending. It is 0 if
+ * no timer is scheduled. (It can be 0 even when
+ * padding_was_scheduled_at_usec is non-zero).
+ */
+ unsigned is_padding_timer_scheduled : 1;
+
+ /**
+ * If this is true, we have seen full duplex behavior.
+ * Stop updating the RTT.
+ */
+ unsigned stop_rtt_update : 1;
+
+/** Max number of padding machines on each circuit. If changed,
+ * also ensure the machine_index bitwith supports the new size. */
+#define CIRCPAD_MAX_MACHINES (2)
+ /** Which padding machine index was this for.
+ * (make sure changes to the bitwidth can support the
+ * CIRCPAD_MAX_MACHINES define). */
+ unsigned machine_index : 1;
+
+} circpad_machine_state_t;
+
+/** Helper macro to get an actual state machine from a machineinfo */
+#define CIRCPAD_GET_MACHINE(machineinfo) \
+ ((machineinfo)->on_circ->padding_machine[(machineinfo)->machine_index])
+
+/**
+ * This specifies a particular padding machine to use after negotiation.
+ *
+ * The constants for machine_num_t are in trunnel.
+ * We want to be able to define extra numbers in the consensus/torrc, though.
+ */
+typedef uint8_t circpad_machine_num_t;
+
+/** Global state machine structure from the consensus */
+typedef struct circpad_machine_spec_t {
+ /** Global machine number */
+ circpad_machine_num_t machine_num;
+
+ /** Which machine index slot should this machine go into in
+ * the array on the circuit_t */
+ unsigned machine_index : 1;
+
+ /** Send a padding negotiate to shut down machine at end state? */
+ unsigned should_negotiate_end : 1;
+
+ // These next three fields are origin machine-only...
+ /** Origin side or relay side */
+ unsigned is_origin_side : 1;
+
+ /** Which hop in the circuit should we send padding to/from?
+ * 1-indexed (ie: hop #1 is guard, #2 middle, #3 exit). */
+ unsigned target_hopnum : 3;
+
+ /** This machine only kills fascists if the following conditions are met. */
+ circpad_machine_conditions_t conditions;
+
+ /** How many padding cells can be sent before we apply overhead limits?
+ * XXX: Note that we can only allow up to 64k of padding cells on an
+ * otherwise quiet circuit. Is this enough? It's 33MB. */
+ uint16_t allowed_padding_count;
+
+ /** Padding percent cap: Stop padding if we exceed this percent overhead.
+ * 0 means no limit. Overhead is defined as percent of total traffic, so
+ * that we can use 0..100 here. This is the same definition as used in
+ * Prop#265. */
+ uint8_t max_padding_percent;
+
+ /** State array: indexed by circpad_statenum_t */
+ circpad_state_t *states;
+
+ /**
+ * Number of states this machine has (ie: length of the states array).
+ * XXX: This field is not needed other than for safety. */
+ circpad_statenum_t num_states;
+} circpad_machine_spec_t;
+
+void circpad_new_consensus_params(const networkstatus_t *ns);
+
+/**
+ * The following are event call-in points that are of interest to
+ * the state machines. They are called during cell processing. */
+void circpad_deliver_unrecognized_cell_events(struct circuit_t *circ,
+ cell_direction_t dir);
+void circpad_deliver_sent_relay_cell_events(struct circuit_t *circ,
+ uint8_t relay_command);
+void circpad_deliver_recognized_relay_cell_events(struct circuit_t *circ,
+ uint8_t relay_command,
+ crypt_path_t *layer_hint);
+
+/** Cell events are delivered by the above delivery functions */
+void circpad_cell_event_nonpadding_sent(struct circuit_t *on_circ);
+void circpad_cell_event_nonpadding_received(struct circuit_t *on_circ);
+void circpad_cell_event_padding_sent(struct circuit_t *on_circ);
+void circpad_cell_event_padding_received(struct circuit_t *on_circ);
+
+/** Internal events are events the machines send to themselves */
+circpad_decision_t
+circpad_internal_event_infinity(circpad_machine_state_t *mi);
+circpad_decision_t
+circpad_internal_event_bins_empty(circpad_machine_state_t *);
+circpad_decision_t circpad_internal_event_state_length_up(
+ circpad_machine_state_t *);
+
+/** Machine creation events are events that cause us to set up or
+ * tear down padding state machines. */
+void circpad_machine_event_circ_added_hop(struct origin_circuit_t *on_circ);
+void circpad_machine_event_circ_built(struct origin_circuit_t *circ);
+void circpad_machine_event_circ_purpose_changed(struct origin_circuit_t *circ);
+void circpad_machine_event_circ_has_streams(struct origin_circuit_t *circ);
+void circpad_machine_event_circ_has_no_streams(struct origin_circuit_t *circ);
+void
+circpad_machine_event_circ_has_no_relay_early(struct origin_circuit_t *circ);
+
+void circpad_machines_init(void);
+void circpad_machines_free(void);
+
+void circpad_machine_states_init(circpad_machine_spec_t *machine,
+ circpad_statenum_t num_states);
+
+void circpad_circuit_free_all_machineinfos(struct circuit_t *circ);
+
+bool circpad_padding_is_from_expected_hop(struct circuit_t *circ,
+ crypt_path_t *from_hop);
+
+/** Serializaton functions for writing to/from torrc and consensus */
+char *circpad_machine_spec_to_string(const circpad_machine_spec_t *machine);
+const circpad_machine_spec_t *circpad_string_to_machine(const char *str);
+
+/* Padding negotiation between client and middle */
+signed_error_t circpad_handle_padding_negotiate(struct circuit_t *circ,
+ struct cell_t *cell);
+signed_error_t circpad_handle_padding_negotiated(struct circuit_t *circ,
+ struct cell_t *cell,
+ crypt_path_t *layer_hint);
+signed_error_t circpad_negotiate_padding(struct origin_circuit_t *circ,
+ circpad_machine_num_t machine,
+ uint8_t target_hopnum,
+ uint8_t command);
+bool circpad_padding_negotiated(struct circuit_t *circ,
+ circpad_machine_num_t machine,
+ uint8_t command,
+ uint8_t response);
+
+MOCK_DECL(circpad_decision_t,
+circpad_machine_schedule_padding,(circpad_machine_state_t *));
+
+MOCK_DECL(circpad_decision_t,
+circpad_machine_spec_transition, (circpad_machine_state_t *mi,
+ circpad_event_t event));
+
+circpad_decision_t circpad_send_padding_cell_for_callback(
+ circpad_machine_state_t *mi);
+
+#ifdef CIRCUITPADDING_PRIVATE
+STATIC circpad_delay_t
+circpad_machine_sample_delay(circpad_machine_state_t *mi);
+
+STATIC bool
+circpad_machine_reached_padding_limit(circpad_machine_state_t *mi);
+
+STATIC
+circpad_decision_t circpad_machine_remove_token(circpad_machine_state_t *mi);
+
+STATIC circpad_delay_t
+circpad_histogram_bin_to_usec(const circpad_machine_state_t *mi,
+ circpad_hist_index_t bin);
+
+STATIC const circpad_state_t *
+circpad_machine_current_state(const circpad_machine_state_t *mi);
+
+STATIC circpad_hist_index_t circpad_histogram_usec_to_bin(
+ const circpad_machine_state_t *mi,
+ circpad_delay_t us);
+
+STATIC circpad_machine_state_t *circpad_circuit_machineinfo_new(
+ struct circuit_t *on_circ,
+ int machine_index);
+STATIC void circpad_machine_remove_higher_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_us);
+STATIC void circpad_machine_remove_lower_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_us);
+STATIC void circpad_machine_remove_closest_token(circpad_machine_state_t *mi,
+ circpad_delay_t target_bin_us,
+ bool use_usec);
+STATIC void circpad_machine_setup_tokens(circpad_machine_state_t *mi);
+
+MOCK_DECL(STATIC signed_error_t,
+circpad_send_command_to_hop,(struct origin_circuit_t *circ, uint8_t hopnum,
+ uint8_t relay_command, const uint8_t *payload,
+ ssize_t payload_len));
+
+#ifdef TOR_UNIT_TESTS
+extern smartlist_t *origin_padding_machines;
+extern smartlist_t *relay_padding_machines;
+#endif
+
+#endif
+
+#endif
diff --git a/src/core/or/circuitstats.c b/src/core/or/circuitstats.c
index 61d5e18a45..c6ea2fff97 100644
--- a/src/core/or/circuitstats.c
+++ b/src/core/or/circuitstats.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuitstats.h b/src/core/or/circuitstats.h
index 174730d035..845d7b6722 100644
--- a/src/core/or/circuitstats.h
+++ b/src/core/or/circuitstats.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/circuituse.c b/src/core/or/circuituse.c
index b7a4ab1b9e..2fdf6f7e8c 100644
--- a/src/core/or/circuituse.c
+++ b/src/core/or/circuituse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -35,6 +35,7 @@
#include "core/or/circuitlist.h"
#include "core/or/circuitstats.h"
#include "core/or/circuituse.h"
+#include "core/or/circuitpadding.h"
#include "core/or/connection_edge.h"
#include "core/or/policies.h"
#include "feature/client/addressmap.h"
@@ -545,6 +546,8 @@ circuit_expire_building(void)
SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *,victim) {
struct timeval cutoff;
+ bool fixed_time = circuit_build_times_disabled(get_options());
+
if (!CIRCUIT_IS_ORIGIN(victim) || /* didn't originate here */
victim->marked_for_close) /* don't mess with marked circs */
continue;
@@ -599,17 +602,19 @@ circuit_expire_building(void)
if (!TO_ORIGIN_CIRCUIT(victim)->relaxed_timeout) {
int first_hop_succeeded = TO_ORIGIN_CIRCUIT(victim)->cpath->state
== CPATH_STATE_OPEN;
- log_info(LD_CIRC,
- "No circuits are opened. Relaxing timeout for circuit %d "
- "(a %s %d-hop circuit in state %s with channel state %s).",
- TO_ORIGIN_CIRCUIT(victim)->global_identifier,
- circuit_purpose_to_string(victim->purpose),
- TO_ORIGIN_CIRCUIT(victim)->build_state ?
- TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len :
- -1,
- circuit_state_to_string(victim->state),
- victim->n_chan ?
- channel_state_to_string(victim->n_chan->state) : "none");
+ if (!fixed_time) {
+ log_info(LD_CIRC,
+ "No circuits are opened. Relaxing timeout for circuit %d "
+ "(a %s %d-hop circuit in state %s with channel state %s).",
+ TO_ORIGIN_CIRCUIT(victim)->global_identifier,
+ circuit_purpose_to_string(victim->purpose),
+ TO_ORIGIN_CIRCUIT(victim)->build_state ?
+ TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len :
+ -1,
+ circuit_state_to_string(victim->state),
+ victim->n_chan ?
+ channel_state_to_string(victim->n_chan->state) : "none");
+ }
/* We count the timeout here for CBT, because technically this
* was a timeout, and the timeout value needs to reset if we
@@ -623,7 +628,8 @@ circuit_expire_building(void)
} else {
static ratelim_t relax_timeout_limit = RATELIM_INIT(3600);
const double build_close_ms = get_circuit_build_close_time_ms();
- log_fn_ratelim(&relax_timeout_limit, LOG_NOTICE, LD_CIRC,
+ if (!fixed_time) {
+ log_fn_ratelim(&relax_timeout_limit, LOG_NOTICE, LD_CIRC,
"No circuits are opened. Relaxed timeout for circuit %d "
"(a %s %d-hop circuit in state %s with channel state %s) to "
"%ldms. However, it appears the circuit has timed out "
@@ -637,6 +643,7 @@ circuit_expire_building(void)
victim->n_chan ?
channel_state_to_string(victim->n_chan->state) : "none",
(long)build_close_ms);
+ }
}
}
@@ -1419,6 +1426,11 @@ circuit_detach_stream(circuit_t *circ, edge_connection_t *conn)
if (circ->purpose == CIRCUIT_PURPOSE_S_REND_JOINED) {
hs_dec_rdv_stream_counter(origin_circ);
}
+
+ /* If there are no more streams on this circ, tell circpad */
+ if (!origin_circ->p_streams)
+ circpad_machine_event_circ_has_no_streams(origin_circ);
+
return;
}
} else {
@@ -2586,6 +2598,12 @@ link_apconn_to_circ(entry_connection_t *apconn, origin_circuit_t *circ,
/* add it into the linked list of streams on this circuit */
log_debug(LD_APP|LD_CIRC, "attaching new conn to circ. n_circ_id %u.",
(unsigned)circ->base_.n_circ_id);
+
+ /* If this is the first stream on this circuit, tell circpad
+ * that streams are attached */
+ if (!circ->p_streams)
+ circpad_machine_event_circ_has_streams(circ);
+
/* reset it, so we can measure circ timeouts */
ENTRY_TO_CONN(apconn)->timestamp_last_read_allowed = time(NULL);
ENTRY_TO_EDGE_CONN(apconn)->next_stream = circ->p_streams;
@@ -3064,6 +3082,8 @@ circuit_change_purpose(circuit_t *circ, uint8_t new_purpose)
if (CIRCUIT_IS_ORIGIN(circ)) {
control_event_circuit_purpose_changed(TO_ORIGIN_CIRCUIT(circ),
old_purpose);
+
+ circpad_machine_event_circ_purpose_changed(TO_ORIGIN_CIRCUIT(circ));
}
}
diff --git a/src/core/or/circuituse.h b/src/core/or/circuituse.h
index b65e85d170..25588dbb11 100644
--- a/src/core/or/circuituse.h
+++ b/src/core/or/circuituse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/command.c b/src/core/or/command.c
index cbe7f622e7..5fb6640c22 100644
--- a/src/core/or/command.c
+++ b/src/core/or/command.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/command.h b/src/core/or/command.h
index 83ffd8dccd..8c90e1de6f 100644
--- a/src/core/or/command.h
+++ b/src/core/or/command.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/connection_edge.c b/src/core/or/connection_edge.c
index 93383a4e01..cc240bdc98 100644
--- a/src/core/or/connection_edge.c
+++ b/src/core/or/connection_edge.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -67,6 +67,7 @@
#include "core/or/circuitbuild.h"
#include "core/or/circuitlist.h"
#include "core/or/circuituse.h"
+#include "core/or/circuitpadding.h"
#include "core/or/connection_edge.h"
#include "core/or/connection_or.h"
#include "core/or/policies.h"
@@ -3712,6 +3713,10 @@ handle_hs_exit_conn(circuit_t *circ, edge_connection_t *conn)
/* Link the circuit and the connection crypt path. */
conn->cpath_layer = origin_circ->cpath->prev;
+ /* If this is the first stream on this circuit, tell circpad */
+ if (!origin_circ->p_streams)
+ circpad_machine_event_circ_has_streams(origin_circ);
+
/* Add it into the linked list of p_streams on this circuit */
conn->next_stream = origin_circ->p_streams;
origin_circ->p_streams = conn;
diff --git a/src/core/or/connection_edge.h b/src/core/or/connection_edge.h
index b8a7365a05..68d8b19a11 100644
--- a/src/core/or/connection_edge.h
+++ b/src/core/or/connection_edge.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index c8667fc399..55047da167 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/connection_or.h b/src/core/or/connection_or.h
index 5f4856d51f..272f536b83 100644
--- a/src/core/or/connection_or.h
+++ b/src/core/or/connection_or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/connection_st.h b/src/core/or/connection_st.h
index 6c22478689..d1430eda14 100644
--- a/src/core/or/connection_st.h
+++ b/src/core/or/connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CONNECTION_ST_H
diff --git a/src/core/or/cpath_build_state_st.h b/src/core/or/cpath_build_state_st.h
index 1db7251132..dbe596d851 100644
--- a/src/core/or/cpath_build_state_st.h
+++ b/src/core/or/cpath_build_state_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CIRCUIT_BUILD_STATE_ST_ST_H
diff --git a/src/core/or/crypt_path_reference_st.h b/src/core/or/crypt_path_reference_st.h
index bb0e519233..3d79f26c1c 100644
--- a/src/core/or/crypt_path_reference_st.h
+++ b/src/core/or/crypt_path_reference_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CRYPT_PATH_REFERENCE_ST_H
diff --git a/src/core/or/crypt_path_st.h b/src/core/or/crypt_path_st.h
index 1380913360..429480f8ab 100644
--- a/src/core/or/crypt_path_st.h
+++ b/src/core/or/crypt_path_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CRYPT_PATH_ST_H
diff --git a/src/core/or/destroy_cell_queue_st.h b/src/core/or/destroy_cell_queue_st.h
index 2839b0bd11..56630670ba 100644
--- a/src/core/or/destroy_cell_queue_st.h
+++ b/src/core/or/destroy_cell_queue_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DESTROY_CELL_QUEUE_ST_H
diff --git a/src/core/or/dos.c b/src/core/or/dos.c
index 4303b8fd59..5f9bbf90ab 100644
--- a/src/core/or/dos.c
+++ b/src/core/or/dos.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/*
diff --git a/src/core/or/dos.h b/src/core/or/dos.h
index 760ef11057..95448d0530 100644
--- a/src/core/or/dos.h
+++ b/src/core/or/dos.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/*
diff --git a/src/core/or/edge_connection_st.h b/src/core/or/edge_connection_st.h
index f4388c10e6..1665b8589f 100644
--- a/src/core/or/edge_connection_st.h
+++ b/src/core/or/edge_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef EDGE_CONNECTION_ST_H
diff --git a/src/core/or/entry_connection_st.h b/src/core/or/entry_connection_st.h
index ebaee2f1a6..45621fadbf 100644
--- a/src/core/or/entry_connection_st.h
+++ b/src/core/or/entry_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ENTRY_CONNECTION_ST_H
diff --git a/src/core/or/entry_port_cfg_st.h b/src/core/or/entry_port_cfg_st.h
index 492fafbd6d..87dfb331e5 100644
--- a/src/core/or/entry_port_cfg_st.h
+++ b/src/core/or/entry_port_cfg_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ENTRY_PORT_CFG_ST_H
diff --git a/src/core/or/extend_info_st.h b/src/core/or/extend_info_st.h
index 277766c4d6..bc7a77b1b2 100644
--- a/src/core/or/extend_info_st.h
+++ b/src/core/or/extend_info_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef EXTEND_INFO_ST_H
diff --git a/src/core/or/half_edge_st.h b/src/core/or/half_edge_st.h
index 5ed24dabeb..d4617be108 100644
--- a/src/core/or/half_edge_st.h
+++ b/src/core/or/half_edge_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef HALF_EDGE_ST_H
diff --git a/src/core/or/listener_connection_st.h b/src/core/or/listener_connection_st.h
index ec350c1b0d..8989a39dc8 100644
--- a/src/core/or/listener_connection_st.h
+++ b/src/core/or/listener_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef LISTENER_CONNECTION_ST_H
diff --git a/src/core/or/ocirc_event.c b/src/core/or/ocirc_event.c
index b400022bb7..4a6fc748c9 100644
--- a/src/core/or/ocirc_event.c
+++ b/src/core/or/ocirc_event.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/ocirc_event.h b/src/core/or/ocirc_event.h
index 19a237d7df..0b125c2898 100644
--- a/src/core/or/ocirc_event.h
+++ b/src/core/or/ocirc_event.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/ocirc_event_sys.h b/src/core/or/ocirc_event_sys.h
index 0bc135ffaf..9d4bfe5333 100644
--- a/src/core/or/ocirc_event_sys.h
+++ b/src/core/or/ocirc_event_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/**
* \file ocirc_event_sys.h
diff --git a/src/core/or/onion.c b/src/core/or/onion.c
index 5c29441947..aa77465b96 100644
--- a/src/core/or/onion.c
+++ b/src/core/or/onion.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/onion.h b/src/core/or/onion.h
index 2049fdf419..bb0b5b8dfd 100644
--- a/src/core/or/onion.h
+++ b/src/core/or/onion.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/or.h b/src/core/or/or.h
index ca373d8ed5..db6d089582 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -207,6 +207,9 @@ struct curve25519_public_key_t;
#define RELAY_COMMAND_RENDEZVOUS_ESTABLISHED 39
#define RELAY_COMMAND_INTRODUCE_ACK 40
+#define RELAY_COMMAND_PADDING_NEGOTIATE 41
+#define RELAY_COMMAND_PADDING_NEGOTIATED 42
+
/* Reasons why an OR connection is closed. */
#define END_OR_CONN_REASON_DONE 1
#define END_OR_CONN_REASON_REFUSED 2 /* connection refused */
@@ -836,6 +839,10 @@ typedef struct protover_summary_flags_t {
* service rendezvous point supporting version 3 as seen in proposal 224.
* This requires HSRend=2. */
unsigned int supports_v3_rendezvous_point: 1;
+
+ /** True iff this router has a protocol list that allows clients to
+ * negotiate link-level padding. Requires Padding>=1. */
+ unsigned int supports_padding : 1;
} protover_summary_flags_t;
typedef struct routerinfo_t routerinfo_t;
diff --git a/src/core/or/or_circuit_st.h b/src/core/or/or_circuit_st.h
index b5e21d9867..6b6feb9d89 100644
--- a/src/core/or/or_circuit_st.h
+++ b/src/core/or/or_circuit_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef OR_CIRCUIT_ST_H
diff --git a/src/core/or/or_connection_st.h b/src/core/or/or_connection_st.h
index 020a717c11..d5db5e8694 100644
--- a/src/core/or/or_connection_st.h
+++ b/src/core/or/or_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef OR_CONNECTION_ST_H
diff --git a/src/core/or/or_handshake_certs_st.h b/src/core/or/or_handshake_certs_st.h
index 38e798b5e2..a93b7104aa 100644
--- a/src/core/or/or_handshake_certs_st.h
+++ b/src/core/or/or_handshake_certs_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef OR_HANDSHAKE_CERTS_ST
diff --git a/src/core/or/or_handshake_state_st.h b/src/core/or/or_handshake_state_st.h
index 4ee095d9af..09a8a34179 100644
--- a/src/core/or/or_handshake_state_st.h
+++ b/src/core/or/or_handshake_state_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef OR_HANDSHAKE_STATE_ST
diff --git a/src/core/or/orconn_event.c b/src/core/or/orconn_event.c
index d81f7b5a0c..9fb34bd1ff 100644
--- a/src/core/or/orconn_event.c
+++ b/src/core/or/orconn_event.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/orconn_event.h b/src/core/or/orconn_event.h
index 4c999e53be..80289d53e6 100644
--- a/src/core/or/orconn_event.h
+++ b/src/core/or/orconn_event.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/orconn_event_sys.h b/src/core/or/orconn_event_sys.h
index 7639023386..bfb0a3ac4a 100644
--- a/src/core/or/orconn_event_sys.h
+++ b/src/core/or/orconn_event_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/**
* \file orconn_event_sys.h
diff --git a/src/core/or/origin_circuit_st.h b/src/core/or/origin_circuit_st.h
index 26cdf590f1..daa5f41dad 100644
--- a/src/core/or/origin_circuit_st.h
+++ b/src/core/or/origin_circuit_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ORIGIN_CIRCUIT_ST_H
@@ -161,6 +161,10 @@ struct origin_circuit_t {
* connections to this circuit. */
unsigned int unusable_for_new_conns : 1;
+ /* If this flag is set (due to padding negotiation failure), we should
+ * not try to negotiate further circuit padding. */
+ unsigned padding_negotiation_failed : 1;
+
/**
* Tristate variable to guard against pathbias miscounting
* due to circuit purpose transitions changing the decision
diff --git a/src/core/or/policies.c b/src/core/or/policies.c
index bffdb1fddd..a6d66d36de 100644
--- a/src/core/or/policies.c
+++ b/src/core/or/policies.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/policies.h b/src/core/or/policies.h
index 0c64ecf378..324c1c2dd1 100644
--- a/src/core/or/policies.h
+++ b/src/core/or/policies.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/port_cfg_st.h b/src/core/or/port_cfg_st.h
index 19410871ed..b67091ce32 100644
--- a/src/core/or/port_cfg_st.h
+++ b/src/core/or/port_cfg_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef PORT_CFG_ST_H
diff --git a/src/core/or/protover.c b/src/core/or/protover.c
index e80fbfae81..53709ad002 100644
--- a/src/core/or/protover.c
+++ b/src/core/or/protover.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -39,6 +39,9 @@ static int protocol_list_contains(const smartlist_t *protos,
static const struct {
protocol_type_t protover_type;
const char *name;
+/* If you add a new protocol here, you probably also want to add
+ * parsing for it in routerstatus_parse_entry_from_string() so that
+ * it is set in routerstatus_t */
} PROTOCOL_NAMES[] = {
{ PRT_LINK, "Link" },
{ PRT_LINKAUTH, "LinkAuth" },
@@ -49,6 +52,7 @@ static const struct {
{ PRT_HSREND, "HSRend" },
{ PRT_DESC, "Desc" },
{ PRT_MICRODESC, "Microdesc"},
+ { PRT_PADDING, "Padding"},
{ PRT_CONS, "Cons" }
};
@@ -396,7 +400,8 @@ protover_get_supported_protocols(void)
"LinkAuth=3 "
#endif
"Microdesc=1-2 "
- "Relay=1-2";
+ "Relay=1-2 "
+ "Padding=1";
}
/** The protocols from protover_get_supported_protocols(), as parsed into a
diff --git a/src/core/or/protover.h b/src/core/or/protover.h
index 7319d2f8c4..27106d4bec 100644
--- a/src/core/or/protover.h
+++ b/src/core/or/protover.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,6 +43,7 @@ typedef enum protocol_type_t {
PRT_DESC,
PRT_MICRODESC,
PRT_CONS,
+ PRT_PADDING,
} protocol_type_t;
bool protover_contains_long_protocol_names(const char *s);
diff --git a/src/core/or/protover_rust.c b/src/core/or/protover_rust.c
index dbdd5c8237..bc56ea11d0 100644
--- a/src/core/or/protover_rust.c
+++ b/src/core/or/protover_rust.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/*
diff --git a/src/core/or/reasons.c b/src/core/or/reasons.c
index 610338ee1d..a7952279ba 100644
--- a/src/core/or/reasons.c
+++ b/src/core/or/reasons.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/reasons.h b/src/core/or/reasons.h
index 837b4a0f1a..c45a8bc38d 100644
--- a/src/core/or/reasons.h
+++ b/src/core/or/reasons.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/relay.c b/src/core/or/relay.c
index 2e92f2a55d..706a6e05cb 100644
--- a/src/core/or/relay.c
+++ b/src/core/or/relay.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -55,6 +55,7 @@
#include "core/or/circuitbuild.h"
#include "core/or/circuitlist.h"
#include "core/or/circuituse.h"
+#include "core/or/circuitpadding.h"
#include "lib/compress/compress.h"
#include "app/config/config.h"
#include "core/mainloop/connection.h"
@@ -80,7 +81,6 @@
#include "feature/nodelist/describe.h"
#include "feature/nodelist/routerlist.h"
#include "core/or/scheduler.h"
-#include "feature/stats/rephist.h"
#include "core/or/cell_st.h"
#include "core/or/cell_queue_st.h"
@@ -293,7 +293,9 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
return 0;
}
- /* not recognized. pass it on. */
+ /* not recognized. inform circpad and pass it on. */
+ circpad_deliver_unrecognized_cell_events(circ, cell_direction);
+
if (cell_direction == CELL_DIRECTION_OUT) {
cell->circ_id = circ->n_circ_id; /* switch it */
chan = circ->n_chan;
@@ -353,11 +355,11 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
* - Encrypt it to the right layer
* - Append it to the appropriate cell_queue on <b>circ</b>.
*/
-static int
-circuit_package_relay_cell(cell_t *cell, circuit_t *circ,
+MOCK_IMPL(int,
+circuit_package_relay_cell, (cell_t *cell, circuit_t *circ,
cell_direction_t cell_direction,
crypt_path_t *layer_hint, streamid_t on_stream,
- const char *filename, int lineno)
+ const char *filename, int lineno))
{
channel_t *chan; /* where to send the cell */
@@ -524,6 +526,8 @@ relay_command_to_string(uint8_t command)
case RELAY_COMMAND_INTRODUCE_ACK: return "INTRODUCE_ACK";
case RELAY_COMMAND_EXTEND2: return "EXTEND2";
case RELAY_COMMAND_EXTENDED2: return "EXTENDED2";
+ case RELAY_COMMAND_PADDING_NEGOTIATE: return "PADDING_NEGOTIATE";
+ case RELAY_COMMAND_PADDING_NEGOTIATED: return "PADDING_NEGOTIATED";
default:
tor_snprintf(buf, sizeof(buf), "Unrecognized relay command %u",
(unsigned)command);
@@ -577,8 +581,8 @@ relay_send_command_from_edge_,(streamid_t stream_id, circuit_t *circ,
log_debug(LD_OR,"delivering %d cell %s.", relay_command,
cell_direction == CELL_DIRECTION_OUT ? "forward" : "backward");
- if (relay_command == RELAY_COMMAND_DROP)
- rep_hist_padding_count_write(PADDING_TYPE_DROP);
+ /* Tell circpad we're sending a relay cell */
+ circpad_deliver_sent_relay_cell_events(circ, relay_command);
/* If we are sending an END cell and this circuit is used for a tunneled
* directory request, advance its state. */
@@ -602,7 +606,9 @@ relay_send_command_from_edge_,(streamid_t stream_id, circuit_t *circ,
* one of them. Don't worry about the conn protocol version:
* append_cell_to_circuit_queue will fix it up. */
cell.command = CELL_RELAY_EARLY;
- --origin_circ->remaining_relay_early_cells;
+ /* If we're out of relay early cells, tell circpad */
+ if (--origin_circ->remaining_relay_early_cells == 0)
+ circpad_machine_event_circ_has_no_relay_early(origin_circ);
log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.",
(int)origin_circ->remaining_relay_early_cells);
/* Memorize the command that is sent as RELAY_EARLY cell; helps debug
@@ -1481,9 +1487,11 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
}
}
+ /* Tell circpad that we've recieved a recognized cell */
+ circpad_deliver_recognized_relay_cell_events(circ, rh.command, layer_hint);
+
/* either conn is NULL, in which case we've got a control cell, or else
* conn points to the recognized stream. */
-
if (conn && !connection_state_is_open(TO_CONN(conn))) {
if (conn->base_.type == CONN_TYPE_EXIT &&
(conn->base_.state == EXIT_CONN_STATE_CONNECTING ||
@@ -1504,8 +1512,14 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
switch (rh.command) {
case RELAY_COMMAND_DROP:
- rep_hist_padding_count_read(PADDING_TYPE_DROP);
-// log_info(domain,"Got a relay-level padding cell. Dropping.");
+ /* Already examined in circpad_deliver_recognized_relay_cell_events */
+ return 0;
+ case RELAY_COMMAND_PADDING_NEGOTIATE:
+ circpad_handle_padding_negotiate(circ, cell);
+ return 0;
+ case RELAY_COMMAND_PADDING_NEGOTIATED:
+ if (circpad_handle_padding_negotiated(circ, cell, layer_hint) == 0)
+ circuit_read_valid_data(TO_ORIGIN_CIRCUIT(circ), rh.length);
return 0;
case RELAY_COMMAND_BEGIN:
case RELAY_COMMAND_BEGIN_DIR:
diff --git a/src/core/or/relay.h b/src/core/or/relay.h
index db7f17b96c..044f6be156 100644
--- a/src/core/or/relay.h
+++ b/src/core/or/relay.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -78,6 +78,11 @@ void destroy_cell_queue_append(destroy_cell_queue_t *queue,
void channel_unlink_all_circuits(channel_t *chan, smartlist_t *detached_out);
MOCK_DECL(int, channel_flush_from_first_active_circuit,
(channel_t *chan, int max));
+MOCK_DECL(int, circuit_package_relay_cell, (cell_t *cell, circuit_t *circ,
+ cell_direction_t cell_direction,
+ crypt_path_t *layer_hint, streamid_t on_stream,
+ const char *filename, int lineno));
+
void update_circuit_on_cmux_(circuit_t *circ, cell_direction_t direction,
const char *file, int lineno);
#define update_circuit_on_cmux(circ, direction) \
diff --git a/src/core/or/relay_crypto_st.h b/src/core/or/relay_crypto_st.h
index f186e182f0..dafce257c7 100644
--- a/src/core/or/relay_crypto_st.h
+++ b/src/core/or/relay_crypto_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef RELAY_CRYPTO_ST_H
diff --git a/src/core/or/scheduler.c b/src/core/or/scheduler.c
index 937e7e45db..ee22a38142 100644
--- a/src/core/or/scheduler.c
+++ b/src/core/or/scheduler.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/or/scheduler.h b/src/core/or/scheduler.h
index 05a888365b..843be2603c 100644
--- a/src/core/or/scheduler.h
+++ b/src/core/or/scheduler.h
@@ -1,4 +1,4 @@
-/* * Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* * Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/scheduler_kist.c b/src/core/or/scheduler_kist.c
index 3ed0f1a5e2..1ec1c49c73 100644
--- a/src/core/or/scheduler_kist.c
+++ b/src/core/or/scheduler_kist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define SCHEDULER_KIST_PRIVATE
@@ -286,7 +286,7 @@ update_socket_info_impl, (socket_table_ent_t *ent))
extra_space =
clamp_double_to_int64(
(ent->cwnd * (int64_t)ent->mss) * sock_buf_size_factor) -
- ent->notsent;
+ ent->notsent - (int64_t)channel_outbuf_length((channel_t *) ent->chan);
if ((tcp_space + extra_space) < 0) {
/* This means that the "notsent" queue is just too big so we shouldn't put
* more in the kernel for now. */
@@ -724,7 +724,7 @@ kist_scheduler_run(void)
SMARTLIST_FOREACH_BEGIN(to_readd, channel_t *, readd_chan) {
scheduler_set_channel_state(readd_chan, SCHED_CHAN_PENDING);
if (!smartlist_contains(cp, readd_chan)) {
- if (!SCHED_BUG(chan->sched_heap_idx != -1, chan)) {
+ if (!SCHED_BUG(readd_chan->sched_heap_idx != -1, readd_chan)) {
/* XXXX Note that the check above is in theory redundant with
* the smartlist_contains check. But let's make sure we're
* not messing anything up, and leave them both for now. */
diff --git a/src/core/or/scheduler_vanilla.c b/src/core/or/scheduler_vanilla.c
index db8374eadb..33536ae04b 100644
--- a/src/core/or/scheduler_vanilla.c
+++ b/src/core/or/scheduler_vanilla.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/or/server_port_cfg_st.h b/src/core/or/server_port_cfg_st.h
index e1a9ca496a..bd026af7ee 100644
--- a/src/core/or/server_port_cfg_st.h
+++ b/src/core/or/server_port_cfg_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef SERVER_PORT_CFG_ST_H
diff --git a/src/core/or/socks_request_st.h b/src/core/or/socks_request_st.h
index 17b668e179..5922870c61 100644
--- a/src/core/or/socks_request_st.h
+++ b/src/core/or/socks_request_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef SOCKS_REQUEST_ST_H
diff --git a/src/core/or/status.c b/src/core/or/status.c
index cdb6df1230..46494ca76c 100644
--- a/src/core/or/status.c
+++ b/src/core/or/status.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/or/status.h b/src/core/or/status.h
index 7258ed5939..3467501ebb 100644
--- a/src/core/or/status.h
+++ b/src/core/or/status.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_STATUS_H
diff --git a/src/core/or/tor_version_st.h b/src/core/or/tor_version_st.h
index 5950c5d5c4..716429bd32 100644
--- a/src/core/or/tor_version_st.h
+++ b/src/core/or/tor_version_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_VERSION_ST_H
diff --git a/src/core/or/var_cell_st.h b/src/core/or/var_cell_st.h
index 514afc44b1..4287c83f6d 100644
--- a/src/core/or/var_cell_st.h
+++ b/src/core/or/var_cell_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef VAR_CELL_ST_H
diff --git a/src/core/or/versions.c b/src/core/or/versions.c
index 7bd1f5899f..2a572d4704 100644
--- a/src/core/or/versions.c
+++ b/src/core/or/versions.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -448,6 +448,8 @@ memoize_protover_summary(protover_summary_flags_t *out,
out->supports_v3_rendezvous_point =
protocol_list_supports_protocol(protocols, PRT_HSREND,
PROTOVER_HS_RENDEZVOUS_POINT_V3);
+ out->supports_padding =
+ protocol_list_supports_protocol(protocols, PRT_PADDING, 1);
protover_summary_flags_t *new_cached = tor_memdup(out, sizeof(*out));
cached = strmap_set(protover_summary_map, protocols, new_cached);
diff --git a/src/core/or/versions.h b/src/core/or/versions.h
index acd8998918..9aa7a0db87 100644
--- a/src/core/or/versions.h
+++ b/src/core/or/versions.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/core/proto/proto_cell.c b/src/core/proto/proto_cell.c
index 70278cd488..697fed29e1 100644
--- a/src/core/proto/proto_cell.c
+++ b/src/core/proto/proto_cell.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/proto/proto_cell.h b/src/core/proto/proto_cell.h
index b29645e41d..4f3982ea43 100644
--- a/src/core/proto/proto_cell.h
+++ b/src/core/proto/proto_cell.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PROTO_CELL_H
diff --git a/src/core/proto/proto_control0.c b/src/core/proto/proto_control0.c
index a770a061a7..d741f28f09 100644
--- a/src/core/proto/proto_control0.c
+++ b/src/core/proto/proto_control0.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/proto/proto_control0.h b/src/core/proto/proto_control0.h
index b80dc6c8f8..162e513a1b 100644
--- a/src/core/proto/proto_control0.h
+++ b/src/core/proto/proto_control0.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PROTO_CONTROL0_H
diff --git a/src/core/proto/proto_ext_or.c b/src/core/proto/proto_ext_or.c
index fe36f6b396..4213bc14dd 100644
--- a/src/core/proto/proto_ext_or.c
+++ b/src/core/proto/proto_ext_or.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/core/proto/proto_ext_or.h b/src/core/proto/proto_ext_or.h
index 2ff6ad45ca..b2bc64af85 100644
--- a/src/core/proto/proto_ext_or.h
+++ b/src/core/proto/proto_ext_or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PROTO_EXT_OR_H
diff --git a/src/core/proto/proto_http.c b/src/core/proto/proto_http.c
index 4ce9ba02f5..88c59ef561 100644
--- a/src/core/proto/proto_http.c
+++ b/src/core/proto/proto_http.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define PROTO_HTTP_PRIVATE
diff --git a/src/core/proto/proto_http.h b/src/core/proto/proto_http.h
index 587e435ede..cd70050205 100644
--- a/src/core/proto/proto_http.h
+++ b/src/core/proto/proto_http.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PROTO_HTTP_H
diff --git a/src/core/proto/proto_socks.c b/src/core/proto/proto_socks.c
index 4071f34f0d..ac0c9e911b 100644
--- a/src/core/proto/proto_socks.c
+++ b/src/core/proto/proto_socks.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
@@ -450,18 +450,22 @@ parse_socks5_userpass_auth(const uint8_t *raw_data, socks_request_t *req,
tor_free(req->username);
req->username = tor_memdup_nulterm(username, usernamelen);
req->usernamelen = usernamelen;
-
- req->got_auth = 1;
}
if (passwordlen && password) {
tor_free(req->password);
req->password = tor_memdup_nulterm(password, passwordlen);
req->passwordlen = passwordlen;
-
- req->got_auth = 1;
}
+ /**
+ * Yes, we allow username and/or password to be empty. Yes, that does
+ * violate RFC 1929. However, some client software can send a username/
+ * password message with these fields being empty and we want to allow them
+ * to be used with Tor.
+ */
+ req->got_auth = 1;
+
end:
socks5_client_userpass_auth_free(trunnel_req);
return res;
diff --git a/src/core/proto/proto_socks.h b/src/core/proto/proto_socks.h
index 53de288f65..2a387bf848 100644
--- a/src/core/proto/proto_socks.h
+++ b/src/core/proto/proto_socks.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_PROTO_SOCKS_H
diff --git a/src/ext/ht.h b/src/ext/ht.h
index df9f60ba1d..54e5eb7cba 100644
--- a/src/ext/ht.h
+++ b/src/ext/ht.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2002, Christopher Clark.
* Copyright (c) 2005-2006, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See license at end. */
/* Based on ideas by Christopher Clark and interfaces from Niels Provos. */
diff --git a/src/ext/trunnel/trunnel-impl.h b/src/ext/trunnel/trunnel-impl.h
index b233cf7631..15d1c8633e 100644
--- a/src/ext/trunnel/trunnel-impl.h
+++ b/src/ext/trunnel/trunnel-impl.h
@@ -5,7 +5,7 @@
/* trunnel-impl.h -- Implementation helpers for trunnel, included by
* generated trunnel files
*
- * Copyright 2014-2017, The Tor Project, Inc.
+ * Copyright 2014-2019, The Tor Project, Inc.
* See license at the end of this file for copying information.
*/
diff --git a/src/ext/trunnel/trunnel.c b/src/ext/trunnel/trunnel.c
index 2442bc3909..3ae3fe02c8 100644
--- a/src/ext/trunnel/trunnel.c
+++ b/src/ext/trunnel/trunnel.c
@@ -4,7 +4,7 @@
*/
/* trunnel.c -- Helper functions to implement trunnel.
*
- * Copyright 2014-2017, The Tor Project, Inc.
+ * Copyright 2014-2019, The Tor Project, Inc.
* See license at the end of this file for copying information.
*
* See trunnel-impl.h for documentation of these functions.
diff --git a/src/ext/trunnel/trunnel.h b/src/ext/trunnel/trunnel.h
index 32c80bac23..9b708437b8 100644
--- a/src/ext/trunnel/trunnel.h
+++ b/src/ext/trunnel/trunnel.h
@@ -5,7 +5,7 @@
/* trunnel.h -- Public declarations for trunnel, to be included
* in trunnel header files.
- * Copyright 2014-2017, The Tor Project, Inc.
+ * Copyright 2014-2019, The Tor Project, Inc.
* See license at the end of this file for copying information.
*/
diff --git a/src/feature/api/tor_api.c b/src/feature/api/tor_api.c
index 5d194f6d8c..697397d46b 100644
--- a/src/feature/api/tor_api.c
+++ b/src/feature/api/tor_api.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/api/tor_api.h b/src/feature/api/tor_api.h
index 1ac9d892f2..2bf130c376 100644
--- a/src/feature/api/tor_api.h
+++ b/src/feature/api/tor_api.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/api/tor_api_internal.h b/src/feature/api/tor_api_internal.h
index 1e32012d01..60e0f3aa59 100644
--- a/src/feature/api/tor_api_internal.h
+++ b/src/feature/api/tor_api_internal.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_API_INTERNAL_H
diff --git a/src/feature/client/addressmap.c b/src/feature/client/addressmap.c
index e62d82b7f3..bbe786a6a2 100644
--- a/src/feature/client/addressmap.c
+++ b/src/feature/client/addressmap.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/addressmap.h b/src/feature/client/addressmap.h
index b0db5c8b4e..9179aef1d0 100644
--- a/src/feature/client/addressmap.h
+++ b/src/feature/client/addressmap.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ADDRESSMAP_H
diff --git a/src/feature/client/bridges.c b/src/feature/client/bridges.c
index 5b537eb16b..05f89ad36c 100644
--- a/src/feature/client/bridges.c
+++ b/src/feature/client/bridges.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/bridges.h b/src/feature/client/bridges.h
index 70588c1b91..27b2750a45 100644
--- a/src/feature/client/bridges.h
+++ b/src/feature/client/bridges.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/circpathbias.c b/src/feature/client/circpathbias.c
index eaeef5fe5d..1743ab5a81 100644
--- a/src/feature/client/circpathbias.c
+++ b/src/feature/client/circpathbias.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/circpathbias.h b/src/feature/client/circpathbias.h
index 9ce4a6b23a..a9a8d18df2 100644
--- a/src/feature/client/circpathbias.h
+++ b/src/feature/client/circpathbias.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/dnsserv.c b/src/feature/client/dnsserv.c
index e5abe5c6aa..44e0caaafa 100644
--- a/src/feature/client/dnsserv.c
+++ b/src/feature/client/dnsserv.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/dnsserv.h b/src/feature/client/dnsserv.h
index afdde3a342..fff1ed2adb 100644
--- a/src/feature/client/dnsserv.h
+++ b/src/feature/client/dnsserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c
index e0fe1b9a58..e543289ce0 100644
--- a/src/feature/client/entrynodes.c
+++ b/src/feature/client/entrynodes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/entrynodes.h b/src/feature/client/entrynodes.h
index 5f9b5bdcba..4e5eb4e960 100644
--- a/src/feature/client/entrynodes.h
+++ b/src/feature/client/entrynodes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/client/transports.c b/src/feature/client/transports.c
index 8a8bcd9f7f..e247055164 100644
--- a/src/feature/client/transports.c
+++ b/src/feature/client/transports.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1236,13 +1236,13 @@ parse_status_line(const char *line, managed_proxy_t *mp)
goto done;
}
- /* We check if we received the TYPE parameter, which is the only *required*
- * value. */
- const config_line_t *type = config_line_find(values, "TYPE");
+ /* We check if we received the TRANSPORT parameter, which is the only
+ * *required* value. */
+ const config_line_t *type = config_line_find(values, "TRANSPORT");
if (! type) {
log_warn(LD_PT, "Managed proxy \"%s\" wrote a STATUS line without "
- "TYPE: %s", mp->argv[0], escaped(data));
+ "TRANSPORT: %s", mp->argv[0], escaped(data));
goto done;
}
@@ -1250,8 +1250,8 @@ parse_status_line(const char *line, managed_proxy_t *mp)
config_line_prepend(&values, "PT", mp->argv[0]);
status_message = kvline_encode(values, KV_QUOTED);
- /* We have checked that TYPE is there, we can now emit the STATUS event via
- * the control port. */
+ /* We have checked that TRANSPORT is there, we can now emit the STATUS event
+ * via the control port. */
control_event_pt_status(status_message);
done:
diff --git a/src/feature/client/transports.h b/src/feature/client/transports.h
index 1a910ae82c..900dd9288e 100644
--- a/src/feature/client/transports.h
+++ b/src/feature/client/transports.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack.c b/src/feature/control/btrack.c
index 14220faad1..d3d12cb2b7 100644
--- a/src/feature/control/btrack.c
+++ b/src/feature/control/btrack.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_circuit.c b/src/feature/control/btrack_circuit.c
index bf09e0b99c..dcee9e460e 100644
--- a/src/feature/control/btrack_circuit.c
+++ b/src/feature/control/btrack_circuit.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_circuit.h b/src/feature/control/btrack_circuit.h
index ab8b8b652c..c40822f1f1 100644
--- a/src/feature/control/btrack_circuit.h
+++ b/src/feature/control/btrack_circuit.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn.c b/src/feature/control/btrack_orconn.c
index 0fbf521000..93ebe8d9cc 100644
--- a/src/feature/control/btrack_orconn.c
+++ b/src/feature/control/btrack_orconn.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn.h b/src/feature/control/btrack_orconn.h
index 4e514d4b04..6ab4892a78 100644
--- a/src/feature/control/btrack_orconn.h
+++ b/src/feature/control/btrack_orconn.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn_cevent.c b/src/feature/control/btrack_orconn_cevent.c
index c7970dca4d..ee142f2873 100644
--- a/src/feature/control/btrack_orconn_cevent.c
+++ b/src/feature/control/btrack_orconn_cevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn_cevent.h b/src/feature/control/btrack_orconn_cevent.h
index 165ff69cdb..f9d24633aa 100644
--- a/src/feature/control/btrack_orconn_cevent.h
+++ b/src/feature/control/btrack_orconn_cevent.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn_maps.c b/src/feature/control/btrack_orconn_maps.c
index b6bb23804c..e64bd3f0fe 100644
--- a/src/feature/control/btrack_orconn_maps.c
+++ b/src/feature/control/btrack_orconn_maps.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_orconn_maps.h b/src/feature/control/btrack_orconn_maps.h
index b1c2c7aa08..3ead40984c 100644
--- a/src/feature/control/btrack_orconn_maps.h
+++ b/src/feature/control/btrack_orconn_maps.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/btrack_sys.h b/src/feature/control/btrack_sys.h
index f80cf342e7..fad35b41db 100644
--- a/src/feature/control/btrack_sys.h
+++ b/src/feature/control/btrack_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/control.c b/src/feature/control/control.c
index d7299a4cf6..e95e58d919 100644
--- a/src/feature/control/control.c
+++ b/src/feature/control/control.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/control.h b/src/feature/control/control.h
index 08d8924e2d..b2ab4c1997 100644
--- a/src/feature/control/control.h
+++ b/src/feature/control/control.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/control_bootstrap.c b/src/feature/control/control_bootstrap.c
index d7a0438513..8153d7595a 100644
--- a/src/feature/control/control_bootstrap.c
+++ b/src/feature/control/control_bootstrap.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -83,7 +83,7 @@ static const struct {
{ BOOTSTRAP_STATUS_AP_HANDSHAKE, "ap_handshake",
"Finishing handshake with a relay to build circuits" },
{ BOOTSTRAP_STATUS_AP_HANDSHAKE_DONE, "ap_handshake_done",
- "Handshake fininshed with a relay to build circuits" },
+ "Handshake finished with a relay to build circuits" },
/* Creating AP circuits */
diff --git a/src/feature/control/control_connection_st.h b/src/feature/control/control_connection_st.h
index ff6264a9a5..177a916257 100644
--- a/src/feature/control/control_connection_st.h
+++ b/src/feature/control/control_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CONTROL_CONNECTION_ST_H
diff --git a/src/feature/control/fmt_serverstatus.c b/src/feature/control/fmt_serverstatus.c
index eef85d356c..a1ddd2119a 100644
--- a/src/feature/control/fmt_serverstatus.c
+++ b/src/feature/control/fmt_serverstatus.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/control/fmt_serverstatus.h b/src/feature/control/fmt_serverstatus.h
index 2ae9c1778a..4b95e5b59f 100644
--- a/src/feature/control/fmt_serverstatus.h
+++ b/src/feature/control/fmt_serverstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/control/getinfo_geoip.h b/src/feature/control/getinfo_geoip.h
index ff77cefecd..fe22137859 100644
--- a/src/feature/control/getinfo_geoip.h
+++ b/src/feature/control/getinfo_geoip.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_GETINFO_GEOIP_H
diff --git a/src/feature/dirauth/authmode.c b/src/feature/dirauth/authmode.c
index 7c900ea7bf..29fcc6d1a9 100644
--- a/src/feature/dirauth/authmode.c
+++ b/src/feature/dirauth/authmode.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/authmode.h b/src/feature/dirauth/authmode.h
index 3ca127b829..40a89c7397 100644
--- a/src/feature/dirauth/authmode.h
+++ b/src/feature/dirauth/authmode.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/bwauth.c b/src/feature/dirauth/bwauth.c
index 29e0c90962..7d7dea4dfa 100644
--- a/src/feature/dirauth/bwauth.c
+++ b/src/feature/dirauth/bwauth.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -20,6 +20,7 @@
#include "feature/nodelist/routerinfo_st.h"
#include "feature/nodelist/vote_routerstatus_st.h"
+#include "lib/crypt_ops/crypto_format.h"
#include "lib/encoding/keyval.h"
/** Total number of routers with measured bandwidth; this is set by
@@ -205,7 +206,8 @@ dirserv_get_credible_bandwidth_kb(const routerinfo_t *ri)
int
dirserv_read_measured_bandwidths(const char *from_file,
smartlist_t *routerstatuses,
- smartlist_t *bw_file_headers)
+ smartlist_t *bw_file_headers,
+ uint8_t *digest_out)
{
FILE *fp = tor_fopen_cloexec(from_file, "r");
int applied_lines = 0;
@@ -219,6 +221,7 @@ dirserv_read_measured_bandwidths(const char *from_file,
int rv = -1;
char *line = NULL;
size_t n = 0;
+ crypto_digest_t *digest = crypto_digest256_new(DIGEST_SHA256);
/* Initialise line, so that we can't possibly run off the end. */
@@ -233,11 +236,14 @@ dirserv_read_measured_bandwidths(const char *from_file,
log_warn(LD_DIRSERV, "Empty bandwidth file");
goto err;
}
+ /* If the line could be gotten, add it to the digest */
+ crypto_digest_add_bytes(digest, (const char *) line, strlen(line));
if (!strlen(line) || line[strlen(line)-1] != '\n') {
log_warn(LD_DIRSERV, "Long or truncated time in bandwidth file: %s",
escaped(line));
- goto err;
+ /* Continue adding lines to the digest. */
+ goto continue_digest;
}
line[strlen(line)-1] = '\0';
@@ -245,14 +251,14 @@ dirserv_read_measured_bandwidths(const char *from_file,
if (!ok) {
log_warn(LD_DIRSERV, "Non-integer time in bandwidth file: %s",
escaped(line));
- goto err;
+ goto continue_digest;
}
- now = time(NULL);
+ now = approx_time();
if ((now - file_time) > MAX_MEASUREMENT_AGE) {
log_warn(LD_DIRSERV, "Bandwidth measurement file stale. Age: %u",
(unsigned)(time(NULL) - file_time));
- goto err;
+ goto continue_digest;
}
/* If timestamp was correct and bw_file_headers is not NULL,
@@ -267,6 +273,7 @@ dirserv_read_measured_bandwidths(const char *from_file,
while (!feof(fp)) {
measured_bw_line_t parsed_line;
if (tor_getline(&line, &n, fp) >= 0) {
+ crypto_digest_add_bytes(digest, (const char *) line, strlen(line));
if (measured_bw_line_parse(&parsed_line, line,
line_is_after_headers) != -1) {
/* This condition will be true when the first complete valid bw line
@@ -305,6 +312,14 @@ dirserv_read_measured_bandwidths(const char *from_file,
"Applied %d measurements.", applied_lines);
rv = 0;
+ continue_digest:
+ /* Continue parsing lines to return the digest of the Bandwidth File. */
+ while (!feof(fp)) {
+ if (tor_getline(&line, &n, fp) >= 0) {
+ crypto_digest_add_bytes(digest, (const char *) line, strlen(line));
+ }
+ }
+
err:
if (line) {
// we need to raw_free this buffer because we got it from tor_getdelim()
@@ -312,6 +327,9 @@ dirserv_read_measured_bandwidths(const char *from_file,
}
if (fp)
fclose(fp);
+ if (digest_out)
+ crypto_digest_get_digest(digest, (char *) digest_out, DIGEST256_LEN);
+ crypto_digest_free(digest);
return rv;
}
diff --git a/src/feature/dirauth/bwauth.h b/src/feature/dirauth/bwauth.h
index f10f8227af..8b7acc4a1c 100644
--- a/src/feature/dirauth/bwauth.h
+++ b/src/feature/dirauth/bwauth.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -21,8 +21,8 @@
int dirserv_read_measured_bandwidths(const char *from_file,
smartlist_t *routerstatuses,
- smartlist_t *bw_file_headers);
-
+ smartlist_t *bw_file_headers,
+ uint8_t *digest_out);
int dirserv_query_measured_bw_cache_kb(const char *node_id,
long *bw_out,
time_t *as_of_out);
diff --git a/src/feature/dirauth/dircollate.c b/src/feature/dirauth/dircollate.c
index ca8e5b7873..7992e3a85f 100644
--- a/src/feature/dirauth/dircollate.c
+++ b/src/feature/dirauth/dircollate.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/dircollate.h b/src/feature/dirauth/dircollate.h
index 0e84c66e6f..754a094817 100644
--- a/src/feature/dirauth/dircollate.h
+++ b/src/feature/dirauth/dircollate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/dirvote.c b/src/feature/dirauth/dirvote.c
index d8a18835f2..ba7b2f1de6 100644
--- a/src/feature/dirauth/dirvote.c
+++ b/src/feature/dirauth/dirvote.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRVOTE_PRIVATE
@@ -61,6 +61,9 @@
#include "lib/encoding/confline.h"
#include "lib/crypt_ops/crypto_format.h"
+/* Algorithm to use for the bandwidth file digest. */
+#define DIGEST_ALG_BW_FILE DIGEST_SHA256
+
/**
* \file dirvote.c
* \brief Functions to compute directory consensus, and schedule voting.
@@ -269,6 +272,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
char *flag_thresholds = dirserv_get_flag_thresholds_line();
char *params;
char *bw_headers_line = NULL;
+ char *bw_file_digest = NULL;
authority_cert_t *cert = v3_ns->cert;
char *methods =
make_consensus_method_list(MIN_SUPPORTED_CONSENSUS_METHOD,
@@ -308,6 +312,28 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
tor_free(bw_file_headers);
}
+ /* Create bandwidth-file-digest if applicable.
+ * v3_ns->b64_digest_bw_file will contain the digest when V3BandwidthsFile
+ * is configured and the bandwidth file could be read, even if it was not
+ * parseable.
+ */
+ if (!tor_digest256_is_zero((const char *)v3_ns->bw_file_digest256)) {
+ /* Encode the digest. */
+ char b64_digest_bw_file[BASE64_DIGEST256_LEN+1] = {0};
+ if (digest256_to_base64(b64_digest_bw_file,
+ (const char *)v3_ns->bw_file_digest256)>0) {
+ /* "bandwidth-file-digest" 1*(SP algorithm "=" digest) NL */
+ char *digest_algo_b64_digest_bw_file = NULL;
+ tor_asprintf(&digest_algo_b64_digest_bw_file, "%s=%s",
+ crypto_digest_algorithm_get_name(DIGEST_ALG_BW_FILE),
+ b64_digest_bw_file);
+ /* No need for tor_strdup(""), format_line_if_present does it. */
+ bw_file_digest = format_line_if_present(
+ "bandwidth-file-digest", digest_algo_b64_digest_bw_file);
+ tor_free(digest_algo_b64_digest_bw_file);
+ }
+ }
+
smartlist_add_asprintf(chunks,
"network-status-version 3\n"
"vote-status %s\n"
@@ -327,6 +353,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
"contact %s\n"
"%s" /* shared randomness information */
"%s" /* bandwidth file headers */
+ "%s" /* bandwidth file */
,
v3_ns->type == NS_TYPE_VOTE ? "vote" : "opinion",
methods,
@@ -345,7 +372,8 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
shared_random_vote_str ?
shared_random_vote_str : "",
bw_headers_line ?
- bw_headers_line : "");
+ bw_headers_line : "",
+ bw_file_digest ? bw_file_digest: "");
tor_free(params);
tor_free(flags);
@@ -353,6 +381,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
tor_free(methods);
tor_free(shared_random_vote_str);
tor_free(bw_headers_line);
+ tor_free(bw_file_digest);
if (!tor_digest_is_zero(voter->legacy_id_digest)) {
char fpbuf[HEX_DIGEST_LEN+1];
@@ -4425,6 +4454,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
const int vote_on_reachability = running_long_enough_to_decide_unreachable();
smartlist_t *microdescriptors = NULL;
smartlist_t *bw_file_headers = NULL;
+ uint8_t bw_file_digest256[DIGEST256_LEN] = {0};
tor_assert(private_key);
tor_assert(cert);
@@ -4462,7 +4492,8 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
* set_routerstatus_from_routerinfo() see up-to-date bandwidth info.
*/
if (options->V3BandwidthsFile) {
- dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL);
+ dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL,
+ NULL);
} else {
/*
* No bandwidths file; clear the measured bandwidth cache in case we had
@@ -4567,7 +4598,9 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
/* Only set bw_file_headers when V3BandwidthsFile is configured */
bw_file_headers = smartlist_new();
dirserv_read_measured_bandwidths(options->V3BandwidthsFile,
- routerstatuses, bw_file_headers);
+ routerstatuses, bw_file_headers,
+ bw_file_digest256);
+
} else {
/*
* No bandwidths file; clear the measured bandwidth cache in case we had
@@ -4664,6 +4697,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
smartlist_sort_strings(v3_out->net_params);
}
v3_out->bw_file_headers = bw_file_headers;
+ memcpy(v3_out->bw_file_digest256, bw_file_digest256, DIGEST256_LEN);
voter = tor_malloc_zero(sizeof(networkstatus_voter_info_t));
voter->nickname = tor_strdup(options->Nickname);
diff --git a/src/feature/dirauth/dirvote.h b/src/feature/dirauth/dirvote.h
index 85f4800700..f9de5ebc41 100644
--- a/src/feature/dirauth/dirvote.h
+++ b/src/feature/dirauth/dirvote.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/dsigs_parse.c b/src/feature/dirauth/dsigs_parse.c
index b0c407567b..d88176fee9 100644
--- a/src/feature/dirauth/dsigs_parse.c
+++ b/src/feature/dirauth/dsigs_parse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/dsigs_parse.h b/src/feature/dirauth/dsigs_parse.h
index ffb2ac0361..fec51ba488 100644
--- a/src/feature/dirauth/dsigs_parse.h
+++ b/src/feature/dirauth/dsigs_parse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/guardfraction.c b/src/feature/dirauth/guardfraction.c
index 1734d0a13c..d1a7f194d4 100644
--- a/src/feature/dirauth/guardfraction.c
+++ b/src/feature/dirauth/guardfraction.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/guardfraction.h b/src/feature/dirauth/guardfraction.h
index 38a0781dbb..72404907a4 100644
--- a/src/feature/dirauth/guardfraction.h
+++ b/src/feature/dirauth/guardfraction.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/keypin.c b/src/feature/dirauth/keypin.c
index fd281377df..667feb2c03 100644
--- a/src/feature/dirauth/keypin.c
+++ b/src/feature/dirauth/keypin.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/keypin.h b/src/feature/dirauth/keypin.h
index 73a76be563..722b6ca5fc 100644
--- a/src/feature/dirauth/keypin.h
+++ b/src/feature/dirauth/keypin.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_KEYPIN_H
diff --git a/src/feature/dirauth/ns_detached_signatures_st.h b/src/feature/dirauth/ns_detached_signatures_st.h
index 26ceec84b9..0f92be2f0d 100644
--- a/src/feature/dirauth/ns_detached_signatures_st.h
+++ b/src/feature/dirauth/ns_detached_signatures_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef NS_DETACHED_SIGNATURES_ST_H
diff --git a/src/feature/dirauth/process_descs.c b/src/feature/dirauth/process_descs.c
index dca87b3eaf..656922233e 100644
--- a/src/feature/dirauth/process_descs.c
+++ b/src/feature/dirauth/process_descs.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/process_descs.h b/src/feature/dirauth/process_descs.h
index 5a0914acd8..510e54f813 100644
--- a/src/feature/dirauth/process_descs.h
+++ b/src/feature/dirauth/process_descs.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/reachability.c b/src/feature/dirauth/reachability.c
index 122c239f9a..883b692cbb 100644
--- a/src/feature/dirauth/reachability.c
+++ b/src/feature/dirauth/reachability.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/reachability.h b/src/feature/dirauth/reachability.h
index 6e4bf28ca9..5a938673ff 100644
--- a/src/feature/dirauth/reachability.h
+++ b/src/feature/dirauth/reachability.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/recommend_pkg.c b/src/feature/dirauth/recommend_pkg.c
index 41c091455e..0456ff8463 100644
--- a/src/feature/dirauth/recommend_pkg.c
+++ b/src/feature/dirauth/recommend_pkg.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/recommend_pkg.h b/src/feature/dirauth/recommend_pkg.h
index 29a41d6dff..8200d78f72 100644
--- a/src/feature/dirauth/recommend_pkg.h
+++ b/src/feature/dirauth/recommend_pkg.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/shared_random.c b/src/feature/dirauth/shared_random.c
index b027d9e375..34b2283250 100644
--- a/src/feature/dirauth/shared_random.c
+++ b/src/feature/dirauth/shared_random.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/shared_random.h b/src/feature/dirauth/shared_random.h
index 68ece9aec0..25d95ebbc7 100644
--- a/src/feature/dirauth/shared_random.h
+++ b/src/feature/dirauth/shared_random.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SHARED_RANDOM_H
diff --git a/src/feature/dirauth/shared_random_state.c b/src/feature/dirauth/shared_random_state.c
index 8c5b28b7cd..92f0b3e737 100644
--- a/src/feature/dirauth/shared_random_state.c
+++ b/src/feature/dirauth/shared_random_state.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/shared_random_state.h b/src/feature/dirauth/shared_random_state.h
index 83edfaf103..35626be3f6 100644
--- a/src/feature/dirauth/shared_random_state.h
+++ b/src/feature/dirauth/shared_random_state.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SHARED_RANDOM_STATE_H
diff --git a/src/feature/dirauth/vote_microdesc_hash_st.h b/src/feature/dirauth/vote_microdesc_hash_st.h
index 31fc98040e..92acdf1157 100644
--- a/src/feature/dirauth/vote_microdesc_hash_st.h
+++ b/src/feature/dirauth/vote_microdesc_hash_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef VOTE_MICRODESC_HASH_ST_H
diff --git a/src/feature/dirauth/voteflags.c b/src/feature/dirauth/voteflags.c
index aab322d96f..4f7593a3e1 100644
--- a/src/feature/dirauth/voteflags.c
+++ b/src/feature/dirauth/voteflags.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirauth/voteflags.h b/src/feature/dirauth/voteflags.h
index 8dce9fbb04..cca6f53746 100644
--- a/src/feature/dirauth/voteflags.h
+++ b/src/feature/dirauth/voteflags.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircache/cached_dir_st.h b/src/feature/dircache/cached_dir_st.h
index 38ae86d975..71dca8c3a2 100644
--- a/src/feature/dircache/cached_dir_st.h
+++ b/src/feature/dircache/cached_dir_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CACHED_DIR_ST_H
diff --git a/src/feature/dircache/conscache.c b/src/feature/dircache/conscache.c
index e9bf58a180..cf4fe8701d 100644
--- a/src/feature/dircache/conscache.c
+++ b/src/feature/dircache/conscache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/dircache/conscache.h b/src/feature/dircache/conscache.h
index c274a60393..d848e57617 100644
--- a/src/feature/dircache/conscache.h
+++ b/src/feature/dircache/conscache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONSCACHE_H
diff --git a/src/feature/dircache/consdiffmgr.c b/src/feature/dircache/consdiffmgr.c
index 8ecab5ca69..6b16307e3c 100644
--- a/src/feature/dircache/consdiffmgr.c
+++ b/src/feature/dircache/consdiffmgr.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircache/consdiffmgr.h b/src/feature/dircache/consdiffmgr.h
index 011c8799d6..b1b3323b6c 100644
--- a/src/feature/dircache/consdiffmgr.h
+++ b/src/feature/dircache/consdiffmgr.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONSDIFFMGR_H
diff --git a/src/feature/dircache/dircache.c b/src/feature/dircache/dircache.c
index 8b89d05e98..ee6e4f7a81 100644
--- a/src/feature/dircache/dircache.c
+++ b/src/feature/dircache/dircache.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRCACHE_PRIVATE
@@ -1068,13 +1068,11 @@ handle_get_status_vote(dir_connection_t *conn, const get_handler_args_t *args)
if (compress_method != NO_METHOD) {
conn->compress_state = tor_compress_new(1, compress_method,
choose_compression_level(estimated_len));
- SMARTLIST_FOREACH(items, const char *, c,
- connection_buf_add_compress(c, strlen(c), conn, 0));
- connection_buf_add_compress("", 0, conn, 1);
- } else {
- SMARTLIST_FOREACH(items, const char *, c,
- connection_buf_add(c, strlen(c), TO_CONN(conn)));
}
+
+ SMARTLIST_FOREACH(items, const char *, c,
+ connection_dir_buf_add(c, strlen(c), conn,
+ c_sl_idx == c_sl_len - 1));
} else {
SMARTLIST_FOREACH(dir_items, cached_dir_t *, d,
connection_buf_add(compress_method != NO_METHOD ?
@@ -1325,19 +1323,13 @@ handle_get_keys(dir_connection_t *conn, const get_handler_args_t *args)
if (compress_method != NO_METHOD) {
conn->compress_state = tor_compress_new(1, compress_method,
choose_compression_level(len));
- SMARTLIST_FOREACH(certs, authority_cert_t *, c,
- connection_buf_add_compress(
- c->cache_info.signed_descriptor_body,
- c->cache_info.signed_descriptor_len,
- conn, 0));
- connection_buf_add_compress("", 0, conn, 1);
- } else {
- SMARTLIST_FOREACH(certs, authority_cert_t *, c,
- connection_buf_add(c->cache_info.signed_descriptor_body,
- c->cache_info.signed_descriptor_len,
- TO_CONN(conn)));
}
- keys_done:
+
+ SMARTLIST_FOREACH(certs, authority_cert_t *, c,
+ connection_dir_buf_add(c->cache_info.signed_descriptor_body,
+ c->cache_info.signed_descriptor_len,
+ conn, c_sl_idx == c_sl_len - 1));
+ keys_done:
smartlist_free(certs);
goto done;
}
diff --git a/src/feature/dircache/dircache.h b/src/feature/dircache/dircache.h
index f05780375a..236ea649ef 100644
--- a/src/feature/dircache/dircache.h
+++ b/src/feature/dircache/dircache.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircache/dirserv.c b/src/feature/dircache/dirserv.c
index 4366000e2e..79400bf15f 100644
--- a/src/feature/dircache/dirserv.c
+++ b/src/feature/dircache/dirserv.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRSERV_PRIVATE
@@ -583,11 +583,9 @@ spooled_resource_flush_some(spooled_resource_t *spooled,
/* Absent objects count as "done". */
return SRFS_DONE;
}
- if (conn->compress_state) {
- connection_buf_add_compress((const char*)body, bodylen, conn, 0);
- } else {
- connection_buf_add((const char*)body, bodylen, TO_CONN(conn));
- }
+
+ connection_dir_buf_add((const char*)body, bodylen, conn, 0);
+
return SRFS_DONE;
} else {
cached_dir_t *cached = spooled->cached_dir_ref;
@@ -622,14 +620,10 @@ spooled_resource_flush_some(spooled_resource_t *spooled,
if (BUG(remaining < 0))
return SRFS_ERR;
ssize_t bytes = (ssize_t) MIN(DIRSERV_CACHED_DIR_CHUNK_SIZE, remaining);
- if (conn->compress_state) {
- connection_buf_add_compress(
- ptr + spooled->cached_dir_offset,
- bytes, conn, 0);
- } else {
- connection_buf_add(ptr + spooled->cached_dir_offset,
- bytes, TO_CONN(conn));
- }
+
+ connection_dir_buf_add(ptr + spooled->cached_dir_offset,
+ bytes, conn, 0);
+
spooled->cached_dir_offset += bytes;
if (spooled->cached_dir_offset >= (off_t)total_len) {
return SRFS_DONE;
diff --git a/src/feature/dircache/dirserv.h b/src/feature/dircache/dirserv.h
index aa1e2494ca..7f944459da 100644
--- a/src/feature/dircache/dirserv.h
+++ b/src/feature/dircache/dirserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirclient/dir_server_st.h b/src/feature/dirclient/dir_server_st.h
index 0a6d8155ae..2f5706cdd9 100644
--- a/src/feature/dirclient/dir_server_st.h
+++ b/src/feature/dirclient/dir_server_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DIR_SERVER_ST_H
diff --git a/src/feature/dirclient/dirclient.c b/src/feature/dirclient/dirclient.c
index cd88fa5ebf..70b6a20028 100644
--- a/src/feature/dirclient/dirclient.c
+++ b/src/feature/dirclient/dirclient.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRCLIENT_PRIVATE
diff --git a/src/feature/dirclient/dirclient.h b/src/feature/dirclient/dirclient.h
index 6bbff2f846..1a93265dc3 100644
--- a/src/feature/dirclient/dirclient.h
+++ b/src/feature/dirclient/dirclient.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirclient/dlstatus.c b/src/feature/dirclient/dlstatus.c
index aea17bdacb..0842a2c676 100644
--- a/src/feature/dirclient/dlstatus.c
+++ b/src/feature/dirclient/dlstatus.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DLSTATUS_PRIVATE
diff --git a/src/feature/dirclient/dlstatus.h b/src/feature/dirclient/dlstatus.h
index aeceb8cb22..99e0d0225b 100644
--- a/src/feature/dirclient/dlstatus.h
+++ b/src/feature/dirclient/dlstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirclient/download_status_st.h b/src/feature/dirclient/download_status_st.h
index 3f18f754a1..11555a1dcc 100644
--- a/src/feature/dirclient/download_status_st.h
+++ b/src/feature/dirclient/download_status_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DOWNLOAD_STATUS_ST_H
diff --git a/src/feature/dircommon/consdiff.c b/src/feature/dircommon/consdiff.c
index 15266f77bf..698f548013 100644
--- a/src/feature/dircommon/consdiff.c
+++ b/src/feature/dircommon/consdiff.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2014, Daniel Martí
- * Copyright (c) 2014-2018, The Tor Project, Inc. */
+ * Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircommon/consdiff.h b/src/feature/dircommon/consdiff.h
index eb7c9f9fe0..b63fcb2cc6 100644
--- a/src/feature/dircommon/consdiff.h
+++ b/src/feature/dircommon/consdiff.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2014, Daniel Martí
- * Copyright (c) 2014-2018, The Tor Project, Inc. */
+ * Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONSDIFF_H
diff --git a/src/feature/dircommon/dir_connection_st.h b/src/feature/dircommon/dir_connection_st.h
index 768f6ba81e..8c59cc7a46 100644
--- a/src/feature/dircommon/dir_connection_st.h
+++ b/src/feature/dircommon/dir_connection_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DIR_CONNECTION_ST_H
diff --git a/src/feature/dircommon/directory.c b/src/feature/dircommon/directory.c
index dff68fcf0e..9e6f72e9ac 100644
--- a/src/feature/dircommon/directory.c
+++ b/src/feature/dircommon/directory.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/dircommon/directory.h b/src/feature/dircommon/directory.h
index ec95573f51..ba3f8c1b0e 100644
--- a/src/feature/dircommon/directory.h
+++ b/src/feature/dircommon/directory.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircommon/fp_pair.c b/src/feature/dircommon/fp_pair.c
index 0544145284..284600df77 100644
--- a/src/feature/dircommon/fp_pair.c
+++ b/src/feature/dircommon/fp_pair.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircommon/fp_pair.h b/src/feature/dircommon/fp_pair.h
index 500c7c9928..5041583e88 100644
--- a/src/feature/dircommon/fp_pair.h
+++ b/src/feature/dircommon/fp_pair.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircommon/vote_timing_st.h b/src/feature/dircommon/vote_timing_st.h
index 14c13eed28..47b90ab009 100644
--- a/src/feature/dircommon/vote_timing_st.h
+++ b/src/feature/dircommon/vote_timing_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef VOTE_TIMING_ST_H
diff --git a/src/feature/dircommon/voting_schedule.c b/src/feature/dircommon/voting_schedule.c
index 07e65ef06d..0a7476eda7 100644
--- a/src/feature/dircommon/voting_schedule.c
+++ b/src/feature/dircommon/voting_schedule.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dircommon/voting_schedule.h b/src/feature/dircommon/voting_schedule.h
index 0e0b0cc988..bafd81184e 100644
--- a/src/feature/dircommon/voting_schedule.h
+++ b/src/feature/dircommon/voting_schedule.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/authcert_parse.c b/src/feature/dirparse/authcert_parse.c
index 334baf8b1a..8ba5a53981 100644
--- a/src/feature/dirparse/authcert_parse.c
+++ b/src/feature/dirparse/authcert_parse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/dirparse/authcert_parse.h b/src/feature/dirparse/authcert_parse.h
index e4e9fec993..800631c3de 100644
--- a/src/feature/dirparse/authcert_parse.h
+++ b/src/feature/dirparse/authcert_parse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/microdesc_parse.c b/src/feature/dirparse/microdesc_parse.c
index 165945e392..3b11e65ca0 100644
--- a/src/feature/dirparse/microdesc_parse.c
+++ b/src/feature/dirparse/microdesc_parse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/microdesc_parse.h b/src/feature/dirparse/microdesc_parse.h
index e8f8b2e17e..23a90084b1 100644
--- a/src/feature/dirparse/microdesc_parse.h
+++ b/src/feature/dirparse/microdesc_parse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/ns_parse.c b/src/feature/dirparse/ns_parse.c
index e0cdb2d46d..d653a59826 100644
--- a/src/feature/dirparse/ns_parse.c
+++ b/src/feature/dirparse/ns_parse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/ns_parse.h b/src/feature/dirparse/ns_parse.h
index 85d9ded685..dedfa6fc88 100644
--- a/src/feature/dirparse/ns_parse.h
+++ b/src/feature/dirparse/ns_parse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/parsecommon.c b/src/feature/dirparse/parsecommon.c
index 88df5eec6f..036a51689c 100644
--- a/src/feature/dirparse/parsecommon.c
+++ b/src/feature/dirparse/parsecommon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/parsecommon.h b/src/feature/dirparse/parsecommon.h
index f14862f04a..ef74925b26 100644
--- a/src/feature/dirparse/parsecommon.h
+++ b/src/feature/dirparse/parsecommon.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/policy_parse.c b/src/feature/dirparse/policy_parse.c
index f9102dd873..7562ae409b 100644
--- a/src/feature/dirparse/policy_parse.c
+++ b/src/feature/dirparse/policy_parse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/policy_parse.h b/src/feature/dirparse/policy_parse.h
index 887aa9261b..e09ee5559f 100644
--- a/src/feature/dirparse/policy_parse.h
+++ b/src/feature/dirparse/policy_parse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/routerparse.c b/src/feature/dirparse/routerparse.c
index 358f6e44e8..ff7e15f1f2 100644
--- a/src/feature/dirparse/routerparse.c
+++ b/src/feature/dirparse/routerparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/routerparse.h b/src/feature/dirparse/routerparse.h
index 6568dce0a4..f9a13f2168 100644
--- a/src/feature/dirparse/routerparse.h
+++ b/src/feature/dirparse/routerparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/sigcommon.c b/src/feature/dirparse/sigcommon.c
index 28e6ff56ed..2019e09918 100644
--- a/src/feature/dirparse/sigcommon.c
+++ b/src/feature/dirparse/sigcommon.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/sigcommon.h b/src/feature/dirparse/sigcommon.h
index 5f25817cdb..fdd8e839a9 100644
--- a/src/feature/dirparse/sigcommon.h
+++ b/src/feature/dirparse/sigcommon.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/signing.c b/src/feature/dirparse/signing.c
index 8d6a40605b..3ab40c3807 100644
--- a/src/feature/dirparse/signing.c
+++ b/src/feature/dirparse/signing.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/signing.h b/src/feature/dirparse/signing.h
index 2b547a185f..2e3699baf8 100644
--- a/src/feature/dirparse/signing.h
+++ b/src/feature/dirparse/signing.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/dirparse/unparseable.c b/src/feature/dirparse/unparseable.c
index 80e38d0703..941b5a1f6d 100644
--- a/src/feature/dirparse/unparseable.c
+++ b/src/feature/dirparse/unparseable.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define UNPARSEABLE_PRIVATE
diff --git a/src/feature/dirparse/unparseable.h b/src/feature/dirparse/unparseable.h
index 2e48c6a9a0..853fe8cb0f 100644
--- a/src/feature/dirparse/unparseable.h
+++ b/src/feature/dirparse/unparseable.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hibernate/hibernate.c b/src/feature/hibernate/hibernate.c
index feeb3d92ef..70c2b4f69f 100644
--- a/src/feature/hibernate/hibernate.c
+++ b/src/feature/hibernate/hibernate.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -37,6 +37,7 @@ hibernating, phase 2:
#include "core/or/connection_or.h"
#include "feature/control/control.h"
#include "lib/crypt_ops/crypto_rand.h"
+#include "lib/defs/time.h"
#include "feature/hibernate/hibernate.h"
#include "core/mainloop/mainloop.h"
#include "feature/relay/router.h"
@@ -832,8 +833,6 @@ hibernate_soft_limit_reached(void)
return get_accounting_bytes() >= soft_limit;
}
-#define TOR_USEC_PER_SEC (1000000)
-
/** Called when we get a SIGINT, or when bandwidth soft limit is
* reached. Puts us into "loose hibernation": we don't accept new
* connections, but we continue handling old ones. */
diff --git a/src/feature/hibernate/hibernate.h b/src/feature/hibernate/hibernate.h
index bfd8571cd6..3309ef0ce3 100644
--- a/src/feature/hibernate/hibernate.h
+++ b/src/feature/hibernate/hibernate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_cache.c b/src/feature/hs/hs_cache.c
index afd69e1bec..05f9940ae6 100644
--- a/src/feature/hs/hs_cache.c
+++ b/src/feature/hs/hs_cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -778,8 +778,8 @@ hs_cache_store_as_client(const char *desc_str,
/* Create client cache descriptor object */
client_desc = cache_client_desc_new(desc_str, identity_pk);
if (!client_desc) {
- log_warn(LD_GENERAL, "Failed to parse received descriptor %s.",
- escaped(desc_str));
+ log_warn(LD_GENERAL, "HSDesc parsing failed!");
+ log_debug(LD_GENERAL, "Failed to parse HSDesc: %s.", escaped(desc_str));
goto err;
}
diff --git a/src/feature/hs/hs_cache.h b/src/feature/hs/hs_cache.h
index 7cd4995d2c..079d31d437 100644
--- a/src/feature/hs/hs_cache.h
+++ b/src/feature/hs/hs_cache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_cell.c b/src/feature/hs/hs_cell.c
index 9bbae6d325..597982b34e 100644
--- a/src/feature/hs/hs_cell.c
+++ b/src/feature/hs/hs_cell.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_cell.h b/src/feature/hs/hs_cell.h
index 7b9d7e5792..abdaba4fba 100644
--- a/src/feature/hs/hs_cell.h
+++ b/src/feature/hs/hs_cell.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index 092781d7ed..e3873d2f18 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_circuit.h b/src/feature/hs/hs_circuit.h
index 54f28a39ab..b8d8b25add 100644
--- a/src/feature/hs/hs_circuit.h
+++ b/src/feature/hs/hs_circuit.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_circuitmap.c b/src/feature/hs/hs_circuitmap.c
index 962a421a00..5480d5eb84 100644
--- a/src/feature/hs/hs_circuitmap.c
+++ b/src/feature/hs/hs_circuitmap.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_circuitmap.h b/src/feature/hs/hs_circuitmap.h
index c39a37c052..c1bbb1ff1c 100644
--- a/src/feature/hs/hs_circuitmap.h
+++ b/src/feature/hs/hs_circuitmap.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_client.c b/src/feature/hs/hs_client.c
index 7dc856ae54..e1d0e8613a 100644
--- a/src/feature/hs/hs_client.c
+++ b/src/feature/hs/hs_client.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1655,17 +1655,17 @@ hs_config_client_authorization(const or_options_t *options,
* as a key of global map in the future. */
if (hs_parse_address(auth->onion_address, &identity_pk,
NULL, NULL) < 0) {
- client_service_authorization_free(auth);
log_warn(LD_REND, "The onion address \"%s\" is invalid in "
"file %s", filename, auth->onion_address);
+ client_service_authorization_free(auth);
continue;
}
if (digest256map_get(auths, identity_pk.pubkey)) {
- client_service_authorization_free(auth);
log_warn(LD_REND, "Duplicate authorization for the same hidden "
"service address %s.",
- safe_str_client(auth->onion_address));
+ safe_str_client_opts(options, auth->onion_address));
+ client_service_authorization_free(auth);
goto end;
}
diff --git a/src/feature/hs/hs_client.h b/src/feature/hs/hs_client.h
index 47c525242f..96a96755fd 100644
--- a/src/feature/hs/hs_client.h
+++ b/src/feature/hs/hs_client.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c
index 8dbd9485ea..ebe49f09a5 100644
--- a/src/feature/hs/hs_common.c
+++ b/src/feature/hs/hs_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_common.h b/src/feature/hs/hs_common.h
index 888eb0a4ec..a44505930a 100644
--- a/src/feature/hs/hs_common.h
+++ b/src/feature/hs/hs_common.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_config.c b/src/feature/hs/hs_config.c
index 497e31fbb4..ee4499ef5b 100644
--- a/src/feature/hs/hs_config.c
+++ b/src/feature/hs/hs_config.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_config.h b/src/feature/hs/hs_config.h
index f443e814c4..040e451f13 100644
--- a/src/feature/hs/hs_config.h
+++ b/src/feature/hs/hs_config.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_control.c b/src/feature/hs/hs_control.c
index df8c1958b5..d837c5beed 100644
--- a/src/feature/hs/hs_control.c
+++ b/src/feature/hs/hs_control.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_control.h b/src/feature/hs/hs_control.h
index 2f5dcd2154..b55e4c53c9 100644
--- a/src/feature/hs/hs_control.h
+++ b/src/feature/hs/hs_control.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_descriptor.c b/src/feature/hs/hs_descriptor.c
index 1b2008c804..b09d50e010 100644
--- a/src/feature/hs/hs_descriptor.c
+++ b/src/feature/hs/hs_descriptor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_descriptor.h b/src/feature/hs/hs_descriptor.h
index adfb94deaa..04a8e16d63 100644
--- a/src/feature/hs/hs_descriptor.h
+++ b/src/feature/hs/hs_descriptor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_ident.c b/src/feature/hs/hs_ident.c
index c6ef8c2ce3..8fd0013941 100644
--- a/src/feature/hs/hs_ident.c
+++ b/src/feature/hs/hs_ident.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_ident.h b/src/feature/hs/hs_ident.h
index ab87d16d17..8c46936a1e 100644
--- a/src/feature/hs/hs_ident.h
+++ b/src/feature/hs/hs_ident.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_intropoint.c b/src/feature/hs/hs_intropoint.c
index 2ea53af6a0..b28a5c2b80 100644
--- a/src/feature/hs/hs_intropoint.c
+++ b/src/feature/hs/hs_intropoint.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_intropoint.h b/src/feature/hs/hs_intropoint.h
index 562836fb07..659a9ad052 100644
--- a/src/feature/hs/hs_intropoint.h
+++ b/src/feature/hs/hs_intropoint.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 623a239d50..b94dd9a481 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_service.h b/src/feature/hs/hs_service.h
index be1155bcd1..ec53f2f23b 100644
--- a/src/feature/hs/hs_service.h
+++ b/src/feature/hs/hs_service.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_stats.c b/src/feature/hs/hs_stats.c
index b109a37cc1..f24b731328 100644
--- a/src/feature/hs/hs_stats.c
+++ b/src/feature/hs/hs_stats.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hs_stats.h b/src/feature/hs/hs_stats.h
index a946ad75e5..d89440faca 100644
--- a/src/feature/hs/hs_stats.h
+++ b/src/feature/hs/hs_stats.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs/hsdir_index_st.h b/src/feature/hs/hsdir_index_st.h
index de5cc9bd16..7d4116d8bb 100644
--- a/src/feature/hs/hsdir_index_st.h
+++ b/src/feature/hs/hsdir_index_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef HSDIR_INDEX_ST_H
diff --git a/src/feature/hs_common/replaycache.c b/src/feature/hs_common/replaycache.c
index 1d3f20e819..9e8c13b1c5 100644
--- a/src/feature/hs_common/replaycache.c
+++ b/src/feature/hs_common/replaycache.c
@@ -1,4 +1,4 @@
- /* Copyright (c) 2012-2018, The Tor Project, Inc. */
+ /* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs_common/replaycache.h b/src/feature/hs_common/replaycache.h
index 3118a88a1a..01f5e600c2 100644
--- a/src/feature/hs_common/replaycache.h
+++ b/src/feature/hs_common/replaycache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs_common/shared_random_client.c b/src/feature/hs_common/shared_random_client.c
index a13404a329..5772034c6d 100644
--- a/src/feature/hs_common/shared_random_client.c
+++ b/src/feature/hs_common/shared_random_client.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/hs_common/shared_random_client.h b/src/feature/hs_common/shared_random_client.h
index 0e26f530a4..95fe2c65ab 100644
--- a/src/feature/hs_common/shared_random_client.h
+++ b/src/feature/hs_common/shared_random_client.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/keymgt/loadkey.c b/src/feature/keymgt/loadkey.c
index 4621e39c54..a8cbf0e582 100644
--- a/src/feature/keymgt/loadkey.c
+++ b/src/feature/keymgt/loadkey.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/keymgt/loadkey.h b/src/feature/keymgt/loadkey.h
index 7717bda29e..8beee57a20 100644
--- a/src/feature/keymgt/loadkey.h
+++ b/src/feature/keymgt/loadkey.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/authcert.c b/src/feature/nodelist/authcert.c
index 2c4915e913..9fc3b62525 100644
--- a/src/feature/nodelist/authcert.c
+++ b/src/feature/nodelist/authcert.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/authcert.h b/src/feature/nodelist/authcert.h
index 48326d7bd0..2effdb06e6 100644
--- a/src/feature/nodelist/authcert.h
+++ b/src/feature/nodelist/authcert.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/authority_cert_st.h b/src/feature/nodelist/authority_cert_st.h
index c2846548c4..68a84bc452 100644
--- a/src/feature/nodelist/authority_cert_st.h
+++ b/src/feature/nodelist/authority_cert_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef AUTHORITY_CERT_ST_H
diff --git a/src/feature/nodelist/desc_store_st.h b/src/feature/nodelist/desc_store_st.h
index 168a83b230..b04a1abc7d 100644
--- a/src/feature/nodelist/desc_store_st.h
+++ b/src/feature/nodelist/desc_store_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DESC_STORE_ST_H
diff --git a/src/feature/nodelist/describe.c b/src/feature/nodelist/describe.c
index 6df3da1965..5c376408c0 100644
--- a/src/feature/nodelist/describe.c
+++ b/src/feature/nodelist/describe.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/describe.h b/src/feature/nodelist/describe.h
index e5723bb933..018af6470e 100644
--- a/src/feature/nodelist/describe.h
+++ b/src/feature/nodelist/describe.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/dirlist.c b/src/feature/nodelist/dirlist.c
index c14d7df0f0..93baa6e4e0 100644
--- a/src/feature/nodelist/dirlist.c
+++ b/src/feature/nodelist/dirlist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/dirlist.h b/src/feature/nodelist/dirlist.h
index 6baa5686c5..9fabd0a44a 100644
--- a/src/feature/nodelist/dirlist.h
+++ b/src/feature/nodelist/dirlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/document_signature_st.h b/src/feature/nodelist/document_signature_st.h
index 0291e099bf..66e32c422f 100644
--- a/src/feature/nodelist/document_signature_st.h
+++ b/src/feature/nodelist/document_signature_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef DOCUMENT_SIGNATURE_ST_H
diff --git a/src/feature/nodelist/extrainfo_st.h b/src/feature/nodelist/extrainfo_st.h
index f5d977e751..c54277b05e 100644
--- a/src/feature/nodelist/extrainfo_st.h
+++ b/src/feature/nodelist/extrainfo_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef EXTRAINFO_ST_H
diff --git a/src/feature/nodelist/fmt_routerstatus.c b/src/feature/nodelist/fmt_routerstatus.c
index b1d4a48038..8c9212e05c 100644
--- a/src/feature/nodelist/fmt_routerstatus.c
+++ b/src/feature/nodelist/fmt_routerstatus.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/fmt_routerstatus.h b/src/feature/nodelist/fmt_routerstatus.h
index 1a6630d266..ddd7a7cf37 100644
--- a/src/feature/nodelist/fmt_routerstatus.h
+++ b/src/feature/nodelist/fmt_routerstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/microdesc.c b/src/feature/nodelist/microdesc.c
index 82070afb98..b4f05b63a0 100644
--- a/src/feature/nodelist/microdesc.c
+++ b/src/feature/nodelist/microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2018, The Tor Project, Inc. */
+/* Copyright (c) 2009-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/microdesc.h b/src/feature/nodelist/microdesc.h
index f11b841cf1..c18099d540 100644
--- a/src/feature/nodelist/microdesc.h
+++ b/src/feature/nodelist/microdesc.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/microdesc_st.h b/src/feature/nodelist/microdesc_st.h
index 30c896181d..367e6a3ef6 100644
--- a/src/feature/nodelist/microdesc_st.h
+++ b/src/feature/nodelist/microdesc_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef MICRODESC_ST_H
diff --git a/src/feature/nodelist/networkstatus.c b/src/feature/nodelist/networkstatus.c
index e1063a0eac..023115978c 100644
--- a/src/feature/nodelist/networkstatus.c
+++ b/src/feature/nodelist/networkstatus.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -44,6 +44,7 @@
#include "core/mainloop/netstatus.h"
#include "core/or/channel.h"
#include "core/or/channelpadding.h"
+#include "core/or/circuitpadding.h"
#include "core/or/circuitmux.h"
#include "core/or/circuitmux_ewma.h"
#include "core/or/circuitstats.h"
@@ -177,6 +178,10 @@ static void update_consensus_bootstrap_multiple_downloads(
static int networkstatus_check_required_protocols(const networkstatus_t *ns,
int client_mode,
char **warning_out);
+static int reload_consensus_from_file(const char *fname,
+ const char *flavor,
+ unsigned flags,
+ const char *source_dir);
/** Forget that we've warned about anything networkstatus-related, so we will
* give fresh warnings if the same behavior happens again. */
@@ -268,27 +273,15 @@ router_reload_consensus_networkstatus(void)
/* FFFF Suppress warnings if cached consensus is bad? */
for (flav = 0; flav < N_CONSENSUS_FLAVORS; ++flav) {
const char *flavor = networkstatus_get_flavor_name(flav);
- tor_mmap_t *m = networkstatus_map_cached_consensus_impl(flav, flavor, 0);
- if (m) {
- if (networkstatus_set_current_consensus(m->data, m->size,
- flavor, flags, NULL) < -1) {
- log_warn(LD_FS, "Couldn't load consensus %s networkstatus from cache",
- flavor);
- }
- tor_munmap_file(m);
- }
+ char *fname = networkstatus_get_cache_fname(flav, flavor, 0);
+ reload_consensus_from_file(fname, flavor, flags, NULL);
+ tor_free(fname);
- m = networkstatus_map_cached_consensus_impl(flav, flavor, 1);
- if (m) {
- if (networkstatus_set_current_consensus(m->data, m->size,
- flavor,
- flags | NSSET_WAS_WAITING_FOR_CERTS,
- NULL)) {
- log_info(LD_FS, "Couldn't load unverified consensus %s networkstatus "
- "from cache", flavor);
- }
- tor_munmap_file(m);
- }
+ fname = networkstatus_get_cache_fname(flav, flavor, 1);
+ reload_consensus_from_file(fname, flavor,
+ flags | NSSET_WAS_WAITING_FOR_CERTS,
+ NULL);
+ tor_free(fname);
}
update_certificate_downloads(time(NULL));
@@ -1750,6 +1743,41 @@ networkstatus_set_current_consensus_from_ns(networkstatus_t *c,
#endif /* defined(TOR_UNIT_TESTS) */
/**
+ * Helper: Read the current consensus of type <b>flavor</b> from
+ * <b>fname</b>. Flags and return values are as for
+ * networkstatus_set_current_consensus().
+ **/
+static int
+reload_consensus_from_file(const char *fname,
+ const char *flavor,
+ unsigned flags,
+ const char *source_dir)
+{
+ tor_mmap_t *map = tor_mmap_file(fname);
+ if (!map)
+ return 0;
+
+ int rv = networkstatus_set_current_consensus(map->data, map->size,
+ flavor, flags, source_dir);
+#ifdef _WIN32
+ if (rv < 0 && tor_memstr(map->data, map->size, "\r\n")) {
+ log_info(LD_GENERAL, "Found CRLF in consensus file %s; falling back to "
+ "read_file_to_string.", escaped(fname));
+ char *content = read_file_to_str(fname, RFTS_IGNORE_MISSING, NULL);
+ rv = networkstatus_set_current_consensus(content, strlen(content),
+ flavor, flags, source_dir);
+ tor_free(content);
+ }
+#endif
+ if (rv < -1) {
+ log_warn(LD_GENERAL, "Couldn't set consensus from cache file %s",
+ escaped(fname));
+ }
+ tor_munmap_file(map);
+ return rv;
+}
+
+/**
* Helper for handle_missing_protocol_warning: handles either the
* client case (if <b>is_client</b> is set) or the server case otherwise.
*/
@@ -1990,7 +2018,7 @@ networkstatus_set_current_consensus(const char *consensus,
waiting->set_at = now;
waiting->dl_failed = 0;
if (!from_cache) {
- write_bytes_to_file(unverified_fname, consensus, consensus_len, 0);
+ write_bytes_to_file(unverified_fname, consensus, consensus_len, 1);
}
if (dl_certs)
authority_certs_fetch_missing(c, now, source_dir);
@@ -2116,6 +2144,7 @@ networkstatus_set_current_consensus(const char *consensus,
circuit_build_times_new_consensus_params(
get_circuit_build_times_mutable(), c);
channelpadding_new_consensus_params(c);
+ circpad_new_consensus_params(c);
}
/* Reset the failure count only if this consensus is actually valid. */
@@ -2140,7 +2169,7 @@ networkstatus_set_current_consensus(const char *consensus,
}
if (!from_cache) {
- write_bytes_to_file(consensus_fname, consensus, consensus_len, 0);
+ write_bytes_to_file(consensus_fname, consensus, consensus_len, 1);
}
warn_early_consensus(c, flavor, now);
@@ -2176,16 +2205,10 @@ networkstatus_note_certs_arrived(const char *source_dir)
if (!waiting->consensus)
continue;
if (networkstatus_check_consensus_signature(waiting->consensus, 0)>=0) {
- tor_mmap_t *mapping = networkstatus_map_cached_consensus_impl(
- i, flavor_name, 1);
- if (mapping) {
- networkstatus_set_current_consensus(mapping->data,
- mapping->size,
- flavor_name,
- NSSET_WAS_WAITING_FOR_CERTS,
- source_dir);
- }
- tor_munmap_file(mapping);
+ char *fname = networkstatus_get_cache_fname(i, flavor_name, 1);
+ reload_consensus_from_file(fname, flavor_name,
+ NSSET_WAS_WAITING_FOR_CERTS, source_dir);
+ tor_free(fname);
}
}
}
diff --git a/src/feature/nodelist/networkstatus.h b/src/feature/nodelist/networkstatus.h
index 572b42cc5a..8269fc6182 100644
--- a/src/feature/nodelist/networkstatus.h
+++ b/src/feature/nodelist/networkstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/networkstatus_sr_info_st.h b/src/feature/nodelist/networkstatus_sr_info_st.h
index 6c937a75f5..677d8ed811 100644
--- a/src/feature/nodelist/networkstatus_sr_info_st.h
+++ b/src/feature/nodelist/networkstatus_sr_info_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef NETWORKSTATUS_SR_INFO_ST_H
diff --git a/src/feature/nodelist/networkstatus_st.h b/src/feature/nodelist/networkstatus_st.h
index 2bb0e3ae35..5c1eea3259 100644
--- a/src/feature/nodelist/networkstatus_st.h
+++ b/src/feature/nodelist/networkstatus_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef NETWORKSTATUS_ST_H
@@ -99,6 +99,9 @@ struct networkstatus_t {
/** List of key=value strings from the headers of the bandwidth list file */
smartlist_t *bw_file_headers;
+
+ /** A SHA256 digest of the bandwidth file used in a vote. */
+ uint8_t bw_file_digest256[DIGEST256_LEN];
};
#endif
diff --git a/src/feature/nodelist/networkstatus_voter_info_st.h b/src/feature/nodelist/networkstatus_voter_info_st.h
index 93ff3cd418..4037fcdeca 100644
--- a/src/feature/nodelist/networkstatus_voter_info_st.h
+++ b/src/feature/nodelist/networkstatus_voter_info_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef NETWORKSTATUS_VOTER_INFO_ST_H
diff --git a/src/feature/nodelist/nickname.c b/src/feature/nodelist/nickname.c
index 7b0b29a934..5378b749ca 100644
--- a/src/feature/nodelist/nickname.c
+++ b/src/feature/nodelist/nickname.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/nickname.h b/src/feature/nodelist/nickname.h
index 86d4309918..9bdc6b50e8 100644
--- a/src/feature/nodelist/nickname.h
+++ b/src/feature/nodelist/nickname.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/node_select.c b/src/feature/nodelist/node_select.c
index 04a24de9a1..e31abb247f 100644
--- a/src/feature/nodelist/node_select.c
+++ b/src/feature/nodelist/node_select.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/node_select.h b/src/feature/nodelist/node_select.h
index 05dabd1234..ed7450b92c 100644
--- a/src/feature/nodelist/node_select.h
+++ b/src/feature/nodelist/node_select.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/node_st.h b/src/feature/nodelist/node_st.h
index 8d182050ac..53ffde29e4 100644
--- a/src/feature/nodelist/node_st.h
+++ b/src/feature/nodelist/node_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef NODE_ST_H
diff --git a/src/feature/nodelist/nodefamily.c b/src/feature/nodelist/nodefamily.c
index 944ad54755..2ec9d5fa40 100644
--- a/src/feature/nodelist/nodefamily.c
+++ b/src/feature/nodelist/nodefamily.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/nodefamily.h b/src/feature/nodelist/nodefamily.h
index ea1076876d..bc5dafce03 100644
--- a/src/feature/nodelist/nodefamily.h
+++ b/src/feature/nodelist/nodefamily.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/nodefamily_st.h b/src/feature/nodelist/nodefamily_st.h
index a498b4b3b9..be533da824 100644
--- a/src/feature/nodelist/nodefamily_st.h
+++ b/src/feature/nodelist/nodefamily_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_NODEFAMILY_ST_H
diff --git a/src/feature/nodelist/nodelist.c b/src/feature/nodelist/nodelist.c
index d94e73f48f..9a27701803 100644
--- a/src/feature/nodelist/nodelist.c
+++ b/src/feature/nodelist/nodelist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -1106,7 +1106,7 @@ node_ed25519_id_matches(const node_t *node, const ed25519_public_key_t *id)
/** Dummy object that should be unreturnable. Used to ensure that
* node_get_protover_summary_flags() always returns non-NULL. */
static const protover_summary_flags_t zero_protover_flags = {
- 0,0,0,0,0,0,0
+ 0,0,0,0,0,0,0,0
};
/** Return the protover_summary_flags for a given node. */
@@ -2350,7 +2350,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
const int authdir = authdir_mode_v3(options);
count_usable_descriptors(num_present_out, num_usable_out,
- mid, consensus, now, NULL,
+ mid, consensus, now, options->MiddleNodes,
USABLE_DESCRIPTOR_ALL);
log_debug(LD_NET,
"%s: %d present, %d usable",
diff --git a/src/feature/nodelist/nodelist.h b/src/feature/nodelist/nodelist.h
index 32300eb00c..3420959618 100644
--- a/src/feature/nodelist/nodelist.h
+++ b/src/feature/nodelist/nodelist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/routerinfo.c b/src/feature/nodelist/routerinfo.c
index 601de78d60..975b503615 100644
--- a/src/feature/nodelist/routerinfo.c
+++ b/src/feature/nodelist/routerinfo.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/nodelist/routerinfo.h b/src/feature/nodelist/routerinfo.h
index b4b245bb23..bfa28c7754 100644
--- a/src/feature/nodelist/routerinfo.h
+++ b/src/feature/nodelist/routerinfo.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/routerinfo_st.h b/src/feature/nodelist/routerinfo_st.h
index 6d4d118ad2..59656818c1 100644
--- a/src/feature/nodelist/routerinfo_st.h
+++ b/src/feature/nodelist/routerinfo_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ROUTERINFO_ST_H
diff --git a/src/feature/nodelist/routerlist.c b/src/feature/nodelist/routerlist.c
index b4d56459df..d1220f553a 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -3221,6 +3221,8 @@ refresh_all_country_info(void)
routerset_refresh_countries(options->EntryNodes);
if (options->ExitNodes)
routerset_refresh_countries(options->ExitNodes);
+ if (options->MiddleNodes)
+ routerset_refresh_countries(options->MiddleNodes);
if (options->ExcludeNodes)
routerset_refresh_countries(options->ExcludeNodes);
if (options->ExcludeExitNodes)
diff --git a/src/feature/nodelist/routerlist.h b/src/feature/nodelist/routerlist.h
index c3e97d9dd2..5771ebb1ab 100644
--- a/src/feature/nodelist/routerlist.h
+++ b/src/feature/nodelist/routerlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/routerlist_st.h b/src/feature/nodelist/routerlist_st.h
index 26cc66138c..7446ead3cb 100644
--- a/src/feature/nodelist/routerlist_st.h
+++ b/src/feature/nodelist/routerlist_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ROUTERLIST_ST_H
diff --git a/src/feature/nodelist/routerset.c b/src/feature/nodelist/routerset.c
index 45863de6e0..55e2756959 100644
--- a/src/feature/nodelist/routerset.c
+++ b/src/feature/nodelist/routerset.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
n * Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/routerset.h b/src/feature/nodelist/routerset.h
index 8a13ca042a..ca8b6fed93 100644
--- a/src/feature/nodelist/routerset.h
+++ b/src/feature/nodelist/routerset.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/routerstatus_st.h b/src/feature/nodelist/routerstatus_st.h
index ea06587799..8d91b45e11 100644
--- a/src/feature/nodelist/routerstatus_st.h
+++ b/src/feature/nodelist/routerstatus_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef ROUTERSTATUS_ST_H
diff --git a/src/feature/nodelist/signed_descriptor_st.h b/src/feature/nodelist/signed_descriptor_st.h
index bffad62895..bdcebf184a 100644
--- a/src/feature/nodelist/signed_descriptor_st.h
+++ b/src/feature/nodelist/signed_descriptor_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef SIGNED_DESCRIPTOR_ST_H
diff --git a/src/feature/nodelist/torcert.c b/src/feature/nodelist/torcert.c
index 938d7d09f6..b0197e9f13 100644
--- a/src/feature/nodelist/torcert.c
+++ b/src/feature/nodelist/torcert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/nodelist/torcert.h b/src/feature/nodelist/torcert.h
index cb5e23cc33..492275b514 100644
--- a/src/feature/nodelist/torcert.h
+++ b/src/feature/nodelist/torcert.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TORCERT_H_INCLUDED
diff --git a/src/feature/nodelist/vote_routerstatus_st.h b/src/feature/nodelist/vote_routerstatus_st.h
index ad0d35b4e6..366754c166 100644
--- a/src/feature/nodelist/vote_routerstatus_st.h
+++ b/src/feature/nodelist/vote_routerstatus_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef VOTE_ROUTERSTATUS_ST_H
diff --git a/src/feature/relay/dns.c b/src/feature/relay/dns.c
index 5213296992..fa0a1b5910 100644
--- a/src/feature/relay/dns.c
+++ b/src/feature/relay/dns.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/dns.h b/src/feature/relay/dns.h
index 5758ea4363..7b2a31a311 100644
--- a/src/feature/relay/dns.h
+++ b/src/feature/relay/dns.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/dns_structs.h b/src/feature/relay/dns_structs.h
index 28c48ca0bc..e128746f81 100644
--- a/src/feature/relay/dns_structs.h
+++ b/src/feature/relay/dns_structs.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/ext_orport.c b/src/feature/relay/ext_orport.c
index 0a649f2743..8589efb48d 100644
--- a/src/feature/relay/ext_orport.c
+++ b/src/feature/relay/ext_orport.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/ext_orport.h b/src/feature/relay/ext_orport.h
index 7eebfdb25b..7313ebd03d 100644
--- a/src/feature/relay/ext_orport.h
+++ b/src/feature/relay/ext_orport.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef EXT_ORPORT_H
diff --git a/src/feature/relay/onion_queue.c b/src/feature/relay/onion_queue.c
index 13142bb053..696905cf5e 100644
--- a/src/feature/relay/onion_queue.c
+++ b/src/feature/relay/onion_queue.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/onion_queue.h b/src/feature/relay/onion_queue.h
index a71f497e34..0df921e057 100644
--- a/src/feature/relay/onion_queue.h
+++ b/src/feature/relay/onion_queue.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index be9ef3d2f3..e796815409 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTER_PRIVATE
diff --git a/src/feature/relay/router.h b/src/feature/relay/router.h
index 7a63c33d32..60bc857ceb 100644
--- a/src/feature/relay/router.h
+++ b/src/feature/relay/router.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/routerkeys.c b/src/feature/relay/routerkeys.c
index 2499d7c8ff..876f908d41 100644
--- a/src/feature/relay/routerkeys.c
+++ b/src/feature/relay/routerkeys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/routerkeys.h b/src/feature/relay/routerkeys.h
index c5a58e553d..0badd34191 100644
--- a/src/feature/relay/routerkeys.h
+++ b/src/feature/relay/routerkeys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ROUTERKEYS_H
diff --git a/src/feature/relay/routermode.c b/src/feature/relay/routermode.c
index 3f87cda505..2a9ddeac4d 100644
--- a/src/feature/relay/routermode.c
+++ b/src/feature/relay/routermode.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/feature/relay/routermode.h b/src/feature/relay/routermode.h
index 1442d706dd..be535af478 100644
--- a/src/feature/relay/routermode.h
+++ b/src/feature/relay/routermode.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/selftest.c b/src/feature/relay/selftest.c
index 26205aad0f..064eea6c46 100644
--- a/src/feature/relay/selftest.c
+++ b/src/feature/relay/selftest.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/relay/selftest.h b/src/feature/relay/selftest.h
index 26034c9e8e..a80ec8936e 100644
--- a/src/feature/relay/selftest.h
+++ b/src/feature/relay/selftest.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rend_authorized_client_st.h b/src/feature/rend/rend_authorized_client_st.h
index 7ccf9771e1..7bd4f2fe8c 100644
--- a/src/feature/rend/rend_authorized_client_st.h
+++ b/src/feature/rend/rend_authorized_client_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef REND_AUTHORIZED_CLIENT_ST_H
diff --git a/src/feature/rend/rend_encoded_v2_service_descriptor_st.h b/src/feature/rend/rend_encoded_v2_service_descriptor_st.h
index 0555ef6728..05ff145d53 100644
--- a/src/feature/rend/rend_encoded_v2_service_descriptor_st.h
+++ b/src/feature/rend/rend_encoded_v2_service_descriptor_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef REND_ENCODED_V2_SERVICE_DESCRIPTOR_ST_H
diff --git a/src/feature/rend/rend_intro_point_st.h b/src/feature/rend/rend_intro_point_st.h
index 89fe5ef2b3..de6987e569 100644
--- a/src/feature/rend/rend_intro_point_st.h
+++ b/src/feature/rend/rend_intro_point_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef REND_INTRO_POINT_ST_H
diff --git a/src/feature/rend/rend_service_descriptor_st.h b/src/feature/rend/rend_service_descriptor_st.h
index 8ea8a62305..aeb3178064 100644
--- a/src/feature/rend/rend_service_descriptor_st.h
+++ b/src/feature/rend/rend_service_descriptor_st.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef REND_SERVICE_DESCRIPTOR_ST_H
diff --git a/src/feature/rend/rendcache.c b/src/feature/rend/rendcache.c
index b851e71959..fadfb43883 100644
--- a/src/feature/rend/rendcache.c
+++ b/src/feature/rend/rendcache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendcache.h b/src/feature/rend/rendcache.h
index 455e51645c..aec97eabb8 100644
--- a/src/feature/rend/rendcache.h
+++ b/src/feature/rend/rendcache.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendclient.c b/src/feature/rend/rendclient.c
index 6ecb3eb3c6..4ca783c7c3 100644
--- a/src/feature/rend/rendclient.c
+++ b/src/feature/rend/rendclient.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendclient.h b/src/feature/rend/rendclient.h
index 0d27d63e65..e5f333238e 100644
--- a/src/feature/rend/rendclient.h
+++ b/src/feature/rend/rendclient.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendcommon.c b/src/feature/rend/rendcommon.c
index 15e4534fca..de48af795f 100644
--- a/src/feature/rend/rendcommon.c
+++ b/src/feature/rend/rendcommon.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendcommon.h b/src/feature/rend/rendcommon.h
index 4ea35f88c2..f136863c7a 100644
--- a/src/feature/rend/rendcommon.h
+++ b/src/feature/rend/rendcommon.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendmid.c b/src/feature/rend/rendmid.c
index 67a8b5f8f4..849f355990 100644
--- a/src/feature/rend/rendmid.c
+++ b/src/feature/rend/rendmid.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -230,9 +230,9 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
(unsigned)circ->p_circ_id);
if (circ->base_.purpose != CIRCUIT_PURPOSE_OR) {
- log_warn(LD_PROTOCOL,
- "Tried to establish rendezvous on non-OR circuit with purpose %s",
- circuit_purpose_to_string(circ->base_.purpose));
+ log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
+ "Tried to establish rendezvous on non-OR circuit with purpose %s",
+ circuit_purpose_to_string(circ->base_.purpose));
goto err;
}
diff --git a/src/feature/rend/rendmid.h b/src/feature/rend/rendmid.h
index 907a0c6a73..8ae1fa16b8 100644
--- a/src/feature/rend/rendmid.h
+++ b/src/feature/rend/rendmid.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendparse.c b/src/feature/rend/rendparse.c
index e2378e340f..abd0feb448 100644
--- a/src/feature/rend/rendparse.c
+++ b/src/feature/rend/rendparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendparse.h b/src/feature/rend/rendparse.h
index 337d3e3b1f..0cef931e90 100644
--- a/src/feature/rend/rendparse.h
+++ b/src/feature/rend/rendparse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendservice.c b/src/feature/rend/rendservice.c
index d135581061..5ee084b0b7 100644
--- a/src/feature/rend/rendservice.c
+++ b/src/feature/rend/rendservice.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/rend/rendservice.h b/src/feature/rend/rendservice.h
index 7186289fc7..a8eb28bee2 100644
--- a/src/feature/rend/rendservice.h
+++ b/src/feature/rend/rendservice.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/stats/geoip_stats.c b/src/feature/stats/geoip_stats.c
index 3106c6c82c..5119da19a0 100644
--- a/src/feature/stats/geoip_stats.c
+++ b/src/feature/stats/geoip_stats.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/stats/geoip_stats.h b/src/feature/stats/geoip_stats.h
index 97011d62ce..2fc62b5466 100644
--- a/src/feature/stats/geoip_stats.h
+++ b/src/feature/stats/geoip_stats.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/stats/predict_ports.c b/src/feature/stats/predict_ports.c
index ebf4a42468..3cbba2c831 100644
--- a/src/feature/stats/predict_ports.c
+++ b/src/feature/stats/predict_ports.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/stats/predict_ports.h b/src/feature/stats/predict_ports.h
index ecb2e9caf2..272344da2f 100644
--- a/src/feature/stats/predict_ports.h
+++ b/src/feature/stats/predict_ports.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 37c4759f37..3f560fbce7 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -2874,24 +2874,23 @@ rep_hist_get_padding_count_lines(void)
void
rep_hist_log_link_protocol_counts(void)
{
- log_notice(LD_HEARTBEAT,
- "Since startup, we have initiated "
- "%"PRIu64" v1 connections, "
- "%"PRIu64" v2 connections, "
- "%"PRIu64" v3 connections, and "
- "%"PRIu64" v4 connections; and received "
- "%"PRIu64" v1 connections, "
- "%"PRIu64" v2 connections, "
- "%"PRIu64" v3 connections, and "
- "%"PRIu64" v4 connections.",
- (link_proto_count[1][1]),
- (link_proto_count[2][1]),
- (link_proto_count[3][1]),
- (link_proto_count[4][1]),
- (link_proto_count[1][0]),
- (link_proto_count[2][0]),
- (link_proto_count[3][0]),
- (link_proto_count[4][0]));
+ smartlist_t *lines = smartlist_new();
+
+ for (int i = 1; i <= MAX_LINK_PROTO; i++) {
+ char *line = NULL;
+ tor_asprintf(&line, "initiated %"PRIu64" and received "
+ "%"PRIu64" v%d connections", link_proto_count[i][1],
+ link_proto_count[i][0], i);
+ smartlist_add(lines, line);
+ }
+
+ char *log_line = smartlist_join_strings(lines, "; ", 0, NULL);
+
+ log_notice(LD_HEARTBEAT, "Since startup we %s.", log_line);
+
+ SMARTLIST_FOREACH(lines, char *, s, tor_free(s));
+ smartlist_free(lines);
+ tor_free(log_line);
}
/** Free all storage held by the OR/link history caches, by the
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index 0584b4684a..3accc8c610 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/arch/bytes.h b/src/lib/arch/bytes.h
index a2e2224d3c..fa82241b28 100644
--- a/src/lib/arch/bytes.h
+++ b/src/lib/arch/bytes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_BYTES_H
diff --git a/src/lib/buf/buffers.c b/src/lib/buf/buffers.c
index 495c5ec453..e7a3b87df0 100644
--- a/src/lib/buf/buffers.c
+++ b/src/lib/buf/buffers.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/buf/buffers.h b/src/lib/buf/buffers.h
index c48f83cfc7..c103b93a82 100644
--- a/src/lib/buf/buffers.h
+++ b/src/lib/buf/buffers.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/cc/compat_compiler.h b/src/lib/cc/compat_compiler.h
index d45316b241..3a0f307186 100644
--- a/src/lib/cc/compat_compiler.h
+++ b/src/lib/cc/compat_compiler.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/cc/torint.h b/src/lib/cc/torint.h
index 5097724726..c9b2d329f2 100644
--- a/src/lib/cc/torint.h
+++ b/src/lib/cc/torint.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress.c b/src/lib/compress/compress.c
index 6cb9bd492b..51591410a2 100644
--- a/src/lib/compress/compress.c
+++ b/src/lib/compress/compress.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress.h b/src/lib/compress/compress.h
index 4dd6506238..8cea4ead60 100644
--- a/src/lib/compress/compress.h
+++ b/src/lib/compress/compress.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_buf.c b/src/lib/compress/compress_buf.c
index ecf76ee078..2e704466f2 100644
--- a/src/lib/compress/compress_buf.c
+++ b/src/lib/compress/compress_buf.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_lzma.c b/src/lib/compress/compress_lzma.c
index e6c8368f6a..2dab37e433 100644
--- a/src/lib/compress/compress_lzma.c
+++ b/src/lib/compress/compress_lzma.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_lzma.h b/src/lib/compress/compress_lzma.h
index 9ef3382a25..556ab437dc 100644
--- a/src/lib/compress/compress_lzma.h
+++ b/src/lib/compress/compress_lzma.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_none.c b/src/lib/compress/compress_none.c
index a0e82d5a99..0b5760773a 100644
--- a/src/lib/compress/compress_none.c
+++ b/src/lib/compress/compress_none.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_none.h b/src/lib/compress/compress_none.h
index 5c395bbb30..2bb9c3d66c 100644
--- a/src/lib/compress/compress_none.h
+++ b/src/lib/compress/compress_none.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_sys.h b/src/lib/compress/compress_sys.h
index a162140cfb..6181072315 100644
--- a/src/lib/compress/compress_sys.h
+++ b/src/lib/compress/compress_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_zlib.c b/src/lib/compress/compress_zlib.c
index 64be1d4256..df0d1bff5f 100644
--- a/src/lib/compress/compress_zlib.c
+++ b/src/lib/compress/compress_zlib.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_zlib.h b/src/lib/compress/compress_zlib.h
index 7af68044de..e4f248cd9b 100644
--- a/src/lib/compress/compress_zlib.h
+++ b/src/lib/compress/compress_zlib.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_zstd.c b/src/lib/compress/compress_zstd.c
index fe88d4a544..45d0d4d602 100644
--- a/src/lib/compress/compress_zstd.c
+++ b/src/lib/compress/compress_zstd.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/compress/compress_zstd.h b/src/lib/compress/compress_zstd.h
index 1177537a9e..47f950b9e0 100644
--- a/src/lib/compress/compress_zstd.h
+++ b/src/lib/compress/compress_zstd.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/bitarray.h b/src/lib/container/bitarray.h
index ae82a4ab4d..910d5fea65 100644
--- a/src/lib/container/bitarray.h
+++ b/src/lib/container/bitarray.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_BITARRAY_H
diff --git a/src/lib/container/bloomfilt.c b/src/lib/container/bloomfilt.c
index a64fcb9300..8c61db81d6 100644
--- a/src/lib/container/bloomfilt.c
+++ b/src/lib/container/bloomfilt.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/bloomfilt.h b/src/lib/container/bloomfilt.h
index 14f909cb19..0ce18bd3ec 100644
--- a/src/lib/container/bloomfilt.h
+++ b/src/lib/container/bloomfilt.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_BLOOMFILT_H
diff --git a/src/lib/container/handles.h b/src/lib/container/handles.h
index 7144e1720d..ca7c94559e 100644
--- a/src/lib/container/handles.h
+++ b/src/lib/container/handles.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/map.c b/src/lib/container/map.c
index 137e316920..fde33d6ace 100644
--- a/src/lib/container/map.c
+++ b/src/lib/container/map.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/map.h b/src/lib/container/map.h
index 4f427fe767..d61b1ec18f 100644
--- a/src/lib/container/map.h
+++ b/src/lib/container/map.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_MAP_H
diff --git a/src/lib/container/order.c b/src/lib/container/order.c
index 1efef2c734..f6503a124e 100644
--- a/src/lib/container/order.c
+++ b/src/lib/container/order.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/order.h b/src/lib/container/order.h
index f0675f347b..a176d6d8a6 100644
--- a/src/lib/container/order.h
+++ b/src/lib/container/order.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_ORDER_H
diff --git a/src/lib/container/smartlist.c b/src/lib/container/smartlist.c
index 64cabfcc6f..3ab2797d68 100644
--- a/src/lib/container/smartlist.c
+++ b/src/lib/container/smartlist.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/container/smartlist.h b/src/lib/container/smartlist.h
index 0f5af3a923..77682db03e 100644
--- a/src/lib/container/smartlist.h
+++ b/src/lib/container/smartlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SMARTLIST_H
diff --git a/src/lib/crypt_ops/aes.h b/src/lib/crypt_ops/aes.h
index 578a1a65a2..7c774062d9 100644
--- a/src/lib/crypt_ops/aes.h
+++ b/src/lib/crypt_ops/aes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Implements a minimal interface to counter-mode AES. */
diff --git a/src/lib/crypt_ops/aes_nss.c b/src/lib/crypt_ops/aes_nss.c
index 272edc5592..4eda5e5902 100644
--- a/src/lib/crypt_ops/aes_nss.c
+++ b/src/lib/crypt_ops/aes_nss.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/aes_openssl.c b/src/lib/crypt_ops/aes_openssl.c
index ac275af33c..2f985d4512 100644
--- a/src/lib/crypt_ops/aes_openssl.c
+++ b/src/lib/crypt_ops/aes_openssl.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,7 +43,7 @@ ENABLE_GCC_WARNING(redundant-decls)
#include "lib/log/log.h"
#include "lib/ctime/di_ops.h"
-#ifdef ANDROID
+#ifdef OPENSSL_NO_ENGINE
/* Android's OpenSSL seems to have removed all of its Engine support. */
#define DISABLE_ENGINES
#endif
diff --git a/src/lib/crypt_ops/compat_openssl.h b/src/lib/crypt_ops/compat_openssl.h
index f2f632ab40..9c10386c34 100644
--- a/src/lib/crypt_ops/compat_openssl.h
+++ b/src/lib/crypt_ops/compat_openssl.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COMPAT_OPENSSL_H
diff --git a/src/lib/crypt_ops/crypto_cipher.c b/src/lib/crypt_ops/crypto_cipher.c
index 6b762e374d..7bc2edad54 100644
--- a/src/lib/crypt_ops/crypto_cipher.c
+++ b/src/lib/crypt_ops/crypto_cipher.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_cipher.h b/src/lib/crypt_ops/crypto_cipher.h
index f9444d03fc..cc4fbf7a41 100644
--- a/src/lib/crypt_ops/crypto_cipher.h
+++ b/src/lib/crypt_ops/crypto_cipher.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_curve25519.c b/src/lib/crypt_ops/crypto_curve25519.c
index f3a9de9fc5..de4e17a296 100644
--- a/src/lib/crypt_ops/crypto_curve25519.c
+++ b/src/lib/crypt_ops/crypto_curve25519.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_curve25519.h b/src/lib/crypt_ops/crypto_curve25519.h
index 1bab4a4197..061a7a3505 100644
--- a/src/lib/crypt_ops/crypto_curve25519.h
+++ b/src/lib/crypt_ops/crypto_curve25519.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_dh.c b/src/lib/crypt_ops/crypto_dh.c
index 673ef311f9..4be7948761 100644
--- a/src/lib/crypt_ops/crypto_dh.c
+++ b/src/lib/crypt_ops/crypto_dh.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_dh.h b/src/lib/crypt_ops/crypto_dh.h
index 3ee343a278..850d50c7ae 100644
--- a/src/lib/crypt_ops/crypto_dh.h
+++ b/src/lib/crypt_ops/crypto_dh.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_dh_nss.c b/src/lib/crypt_ops/crypto_dh_nss.c
index e2d9040f5e..379eb84a4f 100644
--- a/src/lib/crypt_ops/crypto_dh_nss.c
+++ b/src/lib/crypt_ops/crypto_dh_nss.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_dh_openssl.c b/src/lib/crypt_ops/crypto_dh_openssl.c
index 0d9bd513cf..8c6388fd5d 100644
--- a/src/lib/crypt_ops/crypto_dh_openssl.c
+++ b/src/lib/crypt_ops/crypto_dh_openssl.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_digest.c b/src/lib/crypt_ops/crypto_digest.c
index 77cf18dca9..26f06c6c79 100644
--- a/src/lib/crypt_ops/crypto_digest.c
+++ b/src/lib/crypt_ops/crypto_digest.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_digest.h b/src/lib/crypt_ops/crypto_digest.h
index 204f1aaff3..47e60ce617 100644
--- a/src/lib/crypt_ops/crypto_digest.h
+++ b/src/lib/crypt_ops/crypto_digest.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_ed25519.c b/src/lib/crypt_ops/crypto_ed25519.c
index 11c1f56aef..400f963898 100644
--- a/src/lib/crypt_ops/crypto_ed25519.c
+++ b/src/lib/crypt_ops/crypto_ed25519.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_ed25519.h b/src/lib/crypt_ops/crypto_ed25519.h
index 03b3afe206..325b28244d 100644
--- a/src/lib/crypt_ops/crypto_ed25519.h
+++ b/src/lib/crypt_ops/crypto_ed25519.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_format.c b/src/lib/crypt_ops/crypto_format.c
index 09ec753a00..84f73e5272 100644
--- a/src/lib/crypt_ops/crypto_format.c
+++ b/src/lib/crypt_ops/crypto_format.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_format.h b/src/lib/crypt_ops/crypto_format.h
index a246071458..fe852e6a61 100644
--- a/src/lib/crypt_ops/crypto_format.h
+++ b/src/lib/crypt_ops/crypto_format.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_hkdf.c b/src/lib/crypt_ops/crypto_hkdf.c
index a63d9131d9..fd2e701651 100644
--- a/src/lib/crypt_ops/crypto_hkdf.c
+++ b/src/lib/crypt_ops/crypto_hkdf.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -18,6 +18,7 @@
#include "lib/log/util_bug.h"
#ifdef ENABLE_OPENSSL
+#include <openssl/evp.h>
#include <openssl/opensslv.h>
#if defined(HAVE_ERR_LOAD_KDF_STRINGS)
diff --git a/src/lib/crypt_ops/crypto_hkdf.h b/src/lib/crypt_ops/crypto_hkdf.h
index 4c42584277..2994d18e3d 100644
--- a/src/lib/crypt_ops/crypto_hkdf.h
+++ b/src/lib/crypt_ops/crypto_hkdf.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_init.c b/src/lib/crypt_ops/crypto_init.c
index f9943939fb..cf491f32d1 100644
--- a/src/lib/crypt_ops/crypto_init.c
+++ b/src/lib/crypt_ops/crypto_init.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,6 +12,8 @@
#include "orconfig.h"
+#define CRYPTO_PRIVATE
+
#include "lib/crypt_ops/crypto_init.h"
#include "lib/crypt_ops/crypto_curve25519.h"
@@ -69,6 +71,8 @@ crypto_early_init(void)
if (crypto_init_siphash_key() < 0)
return -1;
+ crypto_rand_fast_init();
+
curve25519_init();
ed25519_init();
}
@@ -111,6 +115,7 @@ crypto_thread_cleanup(void)
#ifdef ENABLE_OPENSSL
crypto_openssl_thread_cleanup();
#endif
+ destroy_thread_fast_rng();
}
/**
@@ -129,6 +134,8 @@ crypto_global_cleanup(void)
crypto_nss_global_cleanup();
#endif
+ crypto_rand_fast_shutdown();
+
crypto_early_initialized_ = 0;
crypto_global_initialized_ = 0;
have_seeded_siphash = 0;
diff --git a/src/lib/crypt_ops/crypto_init.h b/src/lib/crypt_ops/crypto_init.h
index b71f144276..540d08eb56 100644
--- a/src/lib/crypt_ops/crypto_init.h
+++ b/src/lib/crypt_ops/crypto_init.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_nss_mgt.c b/src/lib/crypt_ops/crypto_nss_mgt.c
index a1da74aff5..0179126e38 100644
--- a/src/lib/crypt_ops/crypto_nss_mgt.c
+++ b/src/lib/crypt_ops/crypto_nss_mgt.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_nss_mgt.h b/src/lib/crypt_ops/crypto_nss_mgt.h
index 27793dcc45..72fd2a1229 100644
--- a/src/lib/crypt_ops/crypto_nss_mgt.h
+++ b/src/lib/crypt_ops/crypto_nss_mgt.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_ope.c b/src/lib/crypt_ops/crypto_ope.c
index 789517eba2..2186d2a939 100644
--- a/src/lib/crypt_ops/crypto_ope.c
+++ b/src/lib/crypt_ops/crypto_ope.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_ope.h b/src/lib/crypt_ops/crypto_ope.h
index c62ed2a942..610d956335 100644
--- a/src/lib/crypt_ops/crypto_ope.h
+++ b/src/lib/crypt_ops/crypto_ope.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef CRYPTO_OPE_H
diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.c b/src/lib/crypt_ops/crypto_openssl_mgt.c
index 125da0786b..60e4ea795e 100644
--- a/src/lib/crypt_ops/crypto_openssl_mgt.c
+++ b/src/lib/crypt_ops/crypto_openssl_mgt.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.h b/src/lib/crypt_ops/crypto_openssl_mgt.h
index 3b288fb9d8..a3dd03aa04 100644
--- a/src/lib/crypt_ops/crypto_openssl_mgt.h
+++ b/src/lib/crypt_ops/crypto_openssl_mgt.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -50,7 +50,7 @@
#define OPENSSL_V_SERIES(a,b,c) \
OPENSSL_VER((a),(b),(c),0,0)
-#ifdef ANDROID
+#ifdef OPENSSL_NO_ENGINE
/* Android's OpenSSL seems to have removed all of its Engine support. */
#define DISABLE_ENGINES
#endif
diff --git a/src/lib/crypt_ops/crypto_pwbox.c b/src/lib/crypt_ops/crypto_pwbox.c
index 91536e891b..a8db08f7b7 100644
--- a/src/lib/crypt_ops/crypto_pwbox.c
+++ b/src/lib/crypt_ops/crypto_pwbox.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_pwbox.h b/src/lib/crypt_ops/crypto_pwbox.h
index 00fabd0913..5a26889fb2 100644
--- a/src/lib/crypt_ops/crypto_pwbox.h
+++ b/src/lib/crypt_ops/crypto_pwbox.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_rand.c b/src/lib/crypt_ops/crypto_rand.c
index cffd0610f3..0b1cb96c1b 100644
--- a/src/lib/crypt_ops/crypto_rand.c
+++ b/src/lib/crypt_ops/crypto_rand.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,7 +11,6 @@
* number generators, and working with randomness.
**/
-#ifndef CRYPTO_RAND_PRIVATE
#define CRYPTO_RAND_PRIVATE
#include "lib/crypt_ops/crypto_rand.h"
@@ -45,6 +44,7 @@
#ifdef ENABLE_OPENSSL
DISABLE_GCC_WARNING(redundant-decls)
#include <openssl/rand.h>
+#include <openssl/sha.h>
ENABLE_GCC_WARNING(redundant-decls)
#endif
@@ -529,111 +529,14 @@ crypto_rand_unmocked(char *to, size_t n)
}
/**
- * Return a pseudorandom integer, chosen uniformly from the values
- * between 0 and <b>max</b>-1 inclusive. <b>max</b> must be between 1 and
- * INT_MAX+1, inclusive.
+ * Draw an unsigned 32-bit integer uniformly at random.
*/
-int
-crypto_rand_int(unsigned int max)
-{
- unsigned int val;
- unsigned int cutoff;
- tor_assert(max <= ((unsigned int)INT_MAX)+1);
- tor_assert(max > 0); /* don't div by 0 */
-
- /* We ignore any values that are >= 'cutoff,' to avoid biasing the
- * distribution with clipping at the upper end of unsigned int's
- * range.
- */
- cutoff = UINT_MAX - (UINT_MAX%max);
- while (1) {
- crypto_rand((char*)&val, sizeof(val));
- if (val < cutoff)
- return val % max;
- }
-}
-
-/**
- * Return a pseudorandom integer, chosen uniformly from the values i such
- * that min <= i < max.
- *
- * <b>min</b> MUST be in range [0, <b>max</b>).
- * <b>max</b> MUST be in range (min, INT_MAX].
- **/
-int
-crypto_rand_int_range(unsigned int min, unsigned int max)
+uint32_t
+crypto_rand_u32(void)
{
- tor_assert(min < max);
- tor_assert(max <= INT_MAX);
-
- /* The overflow is avoided here because crypto_rand_int() returns a value
- * between 0 and (max - min) inclusive. */
- return min + crypto_rand_int(max - min);
-}
-
-/**
- * As crypto_rand_int_range, but supports uint64_t.
- **/
-uint64_t
-crypto_rand_uint64_range(uint64_t min, uint64_t max)
-{
- tor_assert(min < max);
- return min + crypto_rand_uint64(max - min);
-}
-
-/**
- * As crypto_rand_int_range, but supports time_t.
- **/
-time_t
-crypto_rand_time_range(time_t min, time_t max)
-{
- tor_assert(min < max);
- return min + (time_t)crypto_rand_uint64(max - min);
-}
-
-/**
- * Return a pseudorandom 64-bit integer, chosen uniformly from the values
- * between 0 and <b>max</b>-1 inclusive.
- **/
-uint64_t
-crypto_rand_uint64(uint64_t max)
-{
- uint64_t val;
- uint64_t cutoff;
- tor_assert(max < UINT64_MAX);
- tor_assert(max > 0); /* don't div by 0 */
-
- /* We ignore any values that are >= 'cutoff,' to avoid biasing the
- * distribution with clipping at the upper end of unsigned int's
- * range.
- */
- cutoff = UINT64_MAX - (UINT64_MAX%max);
- while (1) {
- crypto_rand((char*)&val, sizeof(val));
- if (val < cutoff)
- return val % max;
- }
-}
-
-/**
- * Return a pseudorandom double d, chosen uniformly from the range
- * 0.0 <= d < 1.0.
- **/
-double
-crypto_rand_double(void)
-{
- /* We just use an unsigned int here; we don't really care about getting
- * more than 32 bits of resolution */
- unsigned int u;
- crypto_rand((char*)&u, sizeof(u));
-#if SIZEOF_INT == 4
-#define UINT_MAX_AS_DOUBLE 4294967296.0
-#elif SIZEOF_INT == 8
-#define UINT_MAX_AS_DOUBLE 1.8446744073709552e+19
-#else
-#error SIZEOF_INT is neither 4 nor 8
-#endif /* SIZEOF_INT == 4 || ... */
- return ((double)u) / UINT_MAX_AS_DOUBLE;
+ uint32_t rand;
+ crypto_rand((void*)&rand, sizeof(rand));
+ return rand;
}
/**
@@ -726,5 +629,3 @@ crypto_force_rand_ssleay(void)
#endif
return 0;
}
-
-#endif /* !defined(CRYPTO_RAND_PRIVATE) */
diff --git a/src/lib/crypt_ops/crypto_rand.h b/src/lib/crypt_ops/crypto_rand.h
index 0c538d81ac..6eef22ed4d 100644
--- a/src/lib/crypt_ops/crypto_rand.h
+++ b/src/lib/crypt_ops/crypto_rand.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -16,6 +16,7 @@
#include "lib/cc/compat_compiler.h"
#include "lib/cc/torint.h"
#include "lib/testsupport/testsupport.h"
+#include "lib/malloc/malloc.h"
/* random numbers */
int crypto_seed_rng(void) ATTR_WUR;
@@ -24,9 +25,11 @@ void crypto_rand_unmocked(char *to, size_t n);
void crypto_strongest_rand(uint8_t *out, size_t out_len);
MOCK_DECL(void,crypto_strongest_rand_,(uint8_t *out, size_t out_len));
int crypto_rand_int(unsigned int max);
+unsigned crypto_rand_uint(unsigned limit);
int crypto_rand_int_range(unsigned int min, unsigned int max);
uint64_t crypto_rand_uint64_range(uint64_t min, uint64_t max);
time_t crypto_rand_time_range(time_t min, time_t max);
+uint32_t crypto_rand_u32(void);
uint64_t crypto_rand_uint64(uint64_t max);
double crypto_rand_double(void);
struct tor_weak_rng_t;
@@ -40,6 +43,45 @@ void *smartlist_choose(const struct smartlist_t *sl);
void smartlist_shuffle(struct smartlist_t *sl);
int crypto_force_rand_ssleay(void);
+/**
+ * A fast PRNG, for use when the PRNG provided by our crypto library isn't
+ * fast enough. This one _should_ be cryptographically strong, but
+ * has seen less auditing than the PRNGs in OpenSSL and NSS. Use with
+ * caution.
+ *
+ * Note that this object is NOT thread-safe. If you need a thread-safe
+ * prng, use crypto_rand(), or wrap this in a mutex.
+ **/
+typedef struct crypto_fast_rng_t crypto_fast_rng_t;
+/**
+ * Number of bytes used to seed a crypto_rand_fast_t.
+ **/
+crypto_fast_rng_t *crypto_fast_rng_new(void);
+#define CRYPTO_FAST_RNG_SEED_LEN 48
+crypto_fast_rng_t *crypto_fast_rng_new_from_seed(const uint8_t *seed);
+void crypto_fast_rng_getbytes(crypto_fast_rng_t *rng, uint8_t *out, size_t n);
+void crypto_fast_rng_free_(crypto_fast_rng_t *);
+#define crypto_fast_rng_free(c) \
+ FREE_AND_NULL(crypto_fast_rng_t, crypto_fast_rng_free_, (c))
+
+unsigned crypto_fast_rng_get_uint(crypto_fast_rng_t *rng, unsigned limit);
+uint64_t crypto_fast_rng_get_uint64(crypto_fast_rng_t *rng, uint64_t limit);
+double crypto_fast_rng_get_double(crypto_fast_rng_t *rng);
+
+crypto_fast_rng_t *get_thread_fast_rng(void);
+
+#ifdef CRYPTO_PRIVATE
+/* These are only used from crypto_init.c */
+void destroy_thread_fast_rng(void);
+void crypto_rand_fast_init(void);
+void crypto_rand_fast_shutdown(void);
+#endif
+
+#if defined(TOR_UNIT_TESTS)
+/* Used for white-box testing */
+size_t crypto_fast_rng_get_bytes_used_per_stream(void);
+#endif
+
#ifdef CRYPTO_RAND_PRIVATE
STATIC int crypto_strongest_rand_raw(uint8_t *out, size_t out_len);
diff --git a/src/lib/crypt_ops/crypto_rand_fast.c b/src/lib/crypt_ops/crypto_rand_fast.c
new file mode 100644
index 0000000000..760e1025ed
--- /dev/null
+++ b/src/lib/crypt_ops/crypto_rand_fast.c
@@ -0,0 +1,328 @@
+/* Copyright (c) 2001, Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file crypto_rand_fast.c
+ *
+ * \brief A fast strong PRNG for use when our underlying cryptographic
+ * library's PRNG isn't fast enough.
+ **/
+
+/* This library is currently implemented to use the same implementation
+ * technique as libottery, using AES-CTR-256 as our underlying stream cipher.
+ * It's backtracking-resistant immediately, and prediction-resistant after
+ * a while.
+ *
+ * Here's how it works:
+ *
+ * We generate pseudorandom bytes using AES-CTR-256. We generate BUFLEN bytes
+ * at a time. When we do this, we keep the first SEED_LEN bytes as the key
+ * and the IV for our next invocation of AES_CTR, and yield the remaining
+ * BUFLEN - SEED_LEN bytes to the user as they invoke the PRNG. As we yield
+ * bytes to the user, we clear them from the buffer.
+ *
+ * After we have refilled the buffer RESEED_AFTER times, we mix in an
+ * additional SEED_LEN bytes from our strong PRNG into the seed.
+ *
+ * If the user ever asks for a huge number of bytes at once, we pull SEED_LEN
+ * bytes from the PRNG and use them with our stream cipher to fill the user's
+ * request.
+ */
+
+#define CRYPTO_RAND_FAST_PRIVATE
+#define CRYPTO_PRIVATE
+
+#include "lib/crypt_ops/crypto_rand.h"
+#include "lib/crypt_ops/crypto_cipher.h"
+#include "lib/crypt_ops/crypto_digest.h"
+#include "lib/crypt_ops/crypto_util.h"
+#include "lib/intmath/cmp.h"
+#include "lib/cc/ctassert.h"
+#include "lib/malloc/map_anon.h"
+#include "lib/thread/threads.h"
+
+#include "lib/log/util_bug.h"
+
+#include <string.h>
+
+/* Alias for CRYPTO_FAST_RNG_SEED_LEN to make our code shorter.
+ */
+#define SEED_LEN (CRYPTO_FAST_RNG_SEED_LEN)
+
+/* The amount of space that we mmap for a crypto_fast_rng_t.
+ */
+#define MAPLEN 4096
+
+/* The number of random bytes that we can yield to the user after each
+ * time we fill a crypto_fast_rng_t's buffer.
+ */
+#define BUFLEN (MAPLEN - 2*sizeof(uint16_t) - SEED_LEN)
+
+/* The number of buffer refills after which we should fetch more
+ * entropy from crypto_strongest_rand().
+ */
+#define RESEED_AFTER 16
+
+/* The length of the stream cipher key we will use for the PRNG, in bytes.
+ */
+#define KEY_LEN (CRYPTO_FAST_RNG_SEED_LEN - CIPHER_IV_LEN)
+/* The length of the stream cipher key we will use for the PRNG, in bits.
+ */
+#define KEY_BITS (KEY_LEN * 8)
+
+/* Make sure that we have a key length we can actually use with AES. */
+CTASSERT(KEY_BITS == 128 || KEY_BITS == 192 || KEY_BITS == 256);
+
+struct crypto_fast_rng_t {
+ /** How many more fills does this buffer have before we should mix
+ * in the output of crypto_rand()? */
+ uint16_t n_till_reseed;
+ /** How many bytes are remaining in cbuf.bytes? */
+ uint16_t bytes_left;
+ struct cbuf {
+ /** The seed (key and IV) that we will use the next time that we refill
+ * cbuf. */
+ uint8_t seed[SEED_LEN];
+ /**
+ * Bytes that we are yielding to the user. The next byte to be
+ * yielded is at bytes[BUFLEN-bytes_left]; all other bytes in this
+ * array are set to zero.
+ */
+ uint8_t bytes[BUFLEN];
+ } buf;
+};
+
+/* alignof(uint8_t) should be 1, so there shouldn't be any padding in cbuf.
+ */
+CTASSERT(sizeof(struct cbuf) == BUFLEN+SEED_LEN);
+/* We're trying to fit all of the RNG state into a nice mmapable chunk.
+ */
+CTASSERT(sizeof(crypto_fast_rng_t) <= MAPLEN);
+
+/**
+ * Initialize and return a new fast PRNG, using a strong random seed.
+ *
+ * Note that this object is NOT thread-safe. If you need a thread-safe
+ * prng, use crypto_rand(), or wrap this in a mutex.
+ **/
+crypto_fast_rng_t *
+crypto_fast_rng_new(void)
+{
+ uint8_t seed[SEED_LEN];
+ crypto_strongest_rand(seed, sizeof(seed));
+ crypto_fast_rng_t *result = crypto_fast_rng_new_from_seed(seed);
+ memwipe(seed, 0, sizeof(seed));
+ return result;
+}
+
+/**
+ * Initialize and return a new fast PRNG, using a seed value specified
+ * in <b>seed</b>. This value must be CRYPTO_FAST_RNG_SEED_LEN bytes
+ * long.
+ *
+ * Note that this object is NOT thread-safe. If you need a thread-safe
+ * prng, you should probably look at get_thread_fast_rng(). Alternatively,
+ * use crypto_rand(), wrap this in a mutex.
+ **/
+crypto_fast_rng_t *
+crypto_fast_rng_new_from_seed(const uint8_t *seed)
+{
+ /* We try to allocate this object as securely as we can, to avoid
+ * having it get dumped, swapped, or shared after fork.
+ */
+ crypto_fast_rng_t *result = tor_mmap_anonymous(sizeof(*result),
+ ANONMAP_PRIVATE | ANONMAP_NOINHERIT);
+
+ memcpy(result->buf.seed, seed, SEED_LEN);
+ /* Causes an immediate refill once the user asks for data. */
+ result->bytes_left = 0;
+ result->n_till_reseed = RESEED_AFTER;
+ return result;
+}
+
+/**
+ * Helper: create a crypto_cipher_t object from SEED_LEN bytes of
+ * input. The first KEY_LEN bytes are used as the stream cipher's key,
+ * and the remaining CIPHER_IV_LEN bytes are used as its IV.
+ **/
+static inline crypto_cipher_t *
+cipher_from_seed(const uint8_t *seed)
+{
+ return crypto_cipher_new_with_iv_and_bits(seed, seed+KEY_LEN, KEY_BITS);
+}
+
+/**
+ * Helper: refill the seed bytes and output buffer of <b>rng</b>, using
+ * the input seed bytes as input (key and IV) for the stream cipher.
+ *
+ * If the n_till_reseed counter has reached zero, mix more random bytes into
+ * the seed before refilling the buffer.
+ **/
+static void
+crypto_fast_rng_refill(crypto_fast_rng_t *rng)
+{
+ if (rng->n_till_reseed-- == 0) {
+ /* It's time to reseed the RNG. We'll do this by using our XOF to mix the
+ * old value for the seed with some additional bytes from
+ * crypto_strongest_rand(). */
+ crypto_xof_t *xof = crypto_xof_new();
+ crypto_xof_add_bytes(xof, rng->buf.seed, SEED_LEN);
+ {
+ uint8_t seedbuf[SEED_LEN];
+ crypto_strongest_rand(seedbuf, SEED_LEN);
+ crypto_xof_add_bytes(xof, seedbuf, SEED_LEN);
+ memwipe(seedbuf, 0, SEED_LEN);
+ }
+ crypto_xof_squeeze_bytes(xof, rng->buf.seed, SEED_LEN);
+ crypto_xof_free(xof);
+
+ rng->n_till_reseed = RESEED_AFTER;
+ }
+ /* Now fill rng->buf with output from our stream cipher, initialized from
+ * that seed value. */
+ crypto_cipher_t *c = cipher_from_seed(rng->buf.seed);
+ memset(&rng->buf, 0, sizeof(rng->buf));
+ crypto_cipher_crypt_inplace(c, (char*)&rng->buf, sizeof(rng->buf));
+ crypto_cipher_free(c);
+
+ rng->bytes_left = sizeof(rng->buf.bytes);
+}
+
+/**
+ * Release all storage held by <b>rng</b>.
+ **/
+void
+crypto_fast_rng_free_(crypto_fast_rng_t *rng)
+{
+ if (!rng)
+ return;
+ memwipe(rng, 0, sizeof(*rng));
+ tor_munmap_anonymous(rng, sizeof(*rng));
+}
+
+/**
+ * Helper: extract bytes from the PRNG, refilling it as necessary. Does not
+ * optimize the case when the user has asked for a huge output.
+ **/
+static void
+crypto_fast_rng_getbytes_impl(crypto_fast_rng_t *rng, uint8_t *out,
+ const size_t n)
+{
+ size_t bytes_to_yield = n;
+
+ while (bytes_to_yield) {
+ if (rng->bytes_left == 0)
+ crypto_fast_rng_refill(rng);
+
+ const size_t to_copy = MIN(rng->bytes_left, bytes_to_yield);
+
+ tor_assert(sizeof(rng->buf.bytes) >= rng->bytes_left);
+ uint8_t *copy_from = rng->buf.bytes +
+ (sizeof(rng->buf.bytes) - rng->bytes_left);
+ memcpy(out, copy_from, to_copy);
+ memset(copy_from, 0, to_copy);
+
+ out += to_copy;
+ bytes_to_yield -= to_copy;
+ rng->bytes_left -= to_copy;
+ }
+}
+
+/**
+ * Extract <b>n</b> bytes from <b>rng</b> into the buffer at <b>out</b>.
+ **/
+void
+crypto_fast_rng_getbytes(crypto_fast_rng_t *rng, uint8_t *out, size_t n)
+{
+ if (PREDICT_UNLIKELY(n > BUFLEN)) {
+ /* The user has asked for a lot of output; generate it from a stream
+ * cipher seeded by the PRNG rather than by pulling it out of the PRNG
+ * directly.
+ */
+ uint8_t seed[SEED_LEN];
+ crypto_fast_rng_getbytes_impl(rng, seed, SEED_LEN);
+ crypto_cipher_t *c = cipher_from_seed(seed);
+ memset(out, 0, n);
+ crypto_cipher_crypt_inplace(c, (char*)out, n);
+ crypto_cipher_free(c);
+ memwipe(seed, 0, sizeof(seed));
+ return;
+ }
+
+ crypto_fast_rng_getbytes_impl(rng, out, n);
+}
+
+#if defined(TOR_UNIT_TESTS)
+/** for white-box testing: return the number of bytes that are returned from
+ * the user for each invocation of the stream cipher in this RNG. */
+size_t
+crypto_fast_rng_get_bytes_used_per_stream(void)
+{
+ return BUFLEN;
+}
+#endif
+
+/**
+ * Thread-local instance for our fast RNG.
+ **/
+static tor_threadlocal_t thread_rng;
+
+/**
+ * Return a per-thread fast RNG, initializing it if necessary.
+ *
+ * You do not need to free this yourself.
+ *
+ * It is NOT safe to share this value across threads.
+ **/
+crypto_fast_rng_t *
+get_thread_fast_rng(void)
+{
+ crypto_fast_rng_t *rng = tor_threadlocal_get(&thread_rng);
+
+ if (PREDICT_UNLIKELY(rng == NULL)) {
+ rng = crypto_fast_rng_new();
+ tor_threadlocal_set(&thread_rng, rng);
+ }
+
+ return rng;
+}
+
+/**
+ * Used when a thread is exiting: free the per-thread fast RNG if needed.
+ * Invoked from the crypto subsystem's thread-cleanup code.
+ **/
+void
+destroy_thread_fast_rng(void)
+{
+ crypto_fast_rng_t *rng = tor_threadlocal_get(&thread_rng);
+ if (!rng)
+ return;
+ crypto_fast_rng_free(rng);
+ tor_threadlocal_set(&thread_rng, NULL);
+}
+
+/**
+ * Initialize the global thread-local key that will be used to keep track
+ * of per-thread fast RNG instances. Called from the crypto subsystem's
+ * initialization code.
+ **/
+void
+crypto_rand_fast_init(void)
+{
+ tor_threadlocal_init(&thread_rng);
+}
+
+/**
+ * Initialize the global thread-local key that will be used to keep track
+ * of per-thread fast RNG instances. Called from the crypto subsystem's
+ * shutdown code.
+ **/
+void
+crypto_rand_fast_shutdown(void)
+{
+ destroy_thread_fast_rng();
+ tor_threadlocal_destroy(&thread_rng);
+}
diff --git a/src/lib/crypt_ops/crypto_rand_numeric.c b/src/lib/crypt_ops/crypto_rand_numeric.c
new file mode 100644
index 0000000000..d02c5cdcfa
--- /dev/null
+++ b/src/lib/crypt_ops/crypto_rand_numeric.c
@@ -0,0 +1,166 @@
+/**
+ * \file crypto_rand_numeric.c
+ *
+ * \brief Functions for retrieving uniformly distributed numbers
+ * from our PRNGs.
+ **/
+
+#include "lib/crypt_ops/crypto_rand.h"
+#include "lib/log/util_bug.h"
+
+/**
+ * Implementation macro: yields code that returns a uniform unbiased
+ * random number between 0 and limit. "type" is the type of the number to
+ * return; "maxval" is the largest possible value of "type"; and "fill_stmt"
+ * is a code snippet that fills an object named "val" with random bits.
+ **/
+#define IMPLEMENT_RAND_UNSIGNED(type, maxval, limit, fill_stmt) \
+ do { \
+ type val; \
+ type cutoff; \
+ tor_assert((limit) > 0); \
+ \
+ /* We ignore any values that are >= 'cutoff,' to avoid biasing */ \
+ /* the distribution with clipping at the upper end of the type's */ \
+ /* range. */ \
+ cutoff = (maxval) - ((maxval)%(limit)); \
+ while (1) { \
+ fill_stmt; \
+ if (val < cutoff) \
+ return val % (limit); \
+ } \
+ } while (0)
+
+/**
+ * Return a pseudorandom integer chosen uniformly from the values between 0
+ * and <b>limit</b>-1 inclusive. limit must be strictly between 0 and
+ * UINT_MAX. */
+unsigned
+crypto_rand_uint(unsigned limit)
+{
+ tor_assert(limit < UINT_MAX);
+ IMPLEMENT_RAND_UNSIGNED(unsigned, UINT_MAX, limit,
+ crypto_rand((char*)&val, sizeof(val)));
+}
+
+/**
+ * Return a pseudorandom integer, chosen uniformly from the values
+ * between 0 and <b>max</b>-1 inclusive. <b>max</b> must be between 1 and
+ * INT_MAX+1, inclusive.
+ */
+int
+crypto_rand_int(unsigned int max)
+{
+ /* We can't use IMPLEMENT_RAND_UNSIGNED directly, since we're trying
+ * to return a signed type. Instead we make sure that the range is
+ * reasonable for a nonnegative int, use crypto_rand_uint(), and cast.
+ */
+ tor_assert(max <= ((unsigned int)INT_MAX)+1);
+
+ return (int)crypto_rand_uint(max);
+}
+
+/**
+ * Return a pseudorandom integer, chosen uniformly from the values i such
+ * that min <= i < max.
+ *
+ * <b>min</b> MUST be in range [0, <b>max</b>).
+ * <b>max</b> MUST be in range (min, INT_MAX].
+ **/
+int
+crypto_rand_int_range(unsigned int min, unsigned int max)
+{
+ tor_assert(min < max);
+ tor_assert(max <= INT_MAX);
+
+ /* The overflow is avoided here because crypto_rand_int() returns a value
+ * between 0 and (max - min) inclusive. */
+ return min + crypto_rand_int(max - min);
+}
+
+/**
+ * As crypto_rand_int_range, but supports uint64_t.
+ **/
+uint64_t
+crypto_rand_uint64_range(uint64_t min, uint64_t max)
+{
+ tor_assert(min < max);
+ return min + crypto_rand_uint64(max - min);
+}
+
+/**
+ * As crypto_rand_int_range, but supports time_t.
+ **/
+time_t
+crypto_rand_time_range(time_t min, time_t max)
+{
+ tor_assert(min < max);
+ return min + (time_t)crypto_rand_uint64(max - min);
+}
+
+/**
+ * Return a pseudorandom 64-bit integer, chosen uniformly from the values
+ * between 0 and <b>max</b>-1 inclusive.
+ **/
+uint64_t
+crypto_rand_uint64(uint64_t max)
+{
+ tor_assert(max < UINT64_MAX);
+ IMPLEMENT_RAND_UNSIGNED(uint64_t, UINT64_MAX, max,
+ crypto_rand((char*)&val, sizeof(val)));
+}
+
+#if SIZEOF_INT == 4
+#define UINT_MAX_AS_DOUBLE 4294967296.0
+#elif SIZEOF_INT == 8
+#define UINT_MAX_AS_DOUBLE 1.8446744073709552e+19
+#else
+#error SIZEOF_INT is neither 4 nor 8
+#endif /* SIZEOF_INT == 4 || ... */
+
+/**
+ * Return a pseudorandom double d, chosen uniformly from the range
+ * 0.0 <= d < 1.0.
+ **/
+double
+crypto_rand_double(void)
+{
+ /* We just use an unsigned int here; we don't really care about getting
+ * more than 32 bits of resolution */
+ unsigned int u;
+ crypto_rand((char*)&u, sizeof(u));
+ return ((double)u) / UINT_MAX_AS_DOUBLE;
+}
+
+/**
+ * As crypto_rand_uint, but extract the result from a crypto_fast_rng_t
+ */
+unsigned
+crypto_fast_rng_get_uint(crypto_fast_rng_t *rng, unsigned limit)
+{
+ tor_assert(limit < UINT_MAX);
+ IMPLEMENT_RAND_UNSIGNED(unsigned, UINT_MAX, limit,
+ crypto_fast_rng_getbytes(rng, (void*)&val, sizeof(val)));
+}
+
+/**
+ * As crypto_rand_uint64, but extract the result from a crypto_fast_rng_t.
+ */
+uint64_t
+crypto_fast_rng_get_uint64(crypto_fast_rng_t *rng, uint64_t limit)
+{
+ tor_assert(limit < UINT64_MAX);
+ IMPLEMENT_RAND_UNSIGNED(uint64_t, UINT64_MAX, limit,
+ crypto_fast_rng_getbytes(rng, (void*)&val, sizeof(val)));
+}
+
+/**
+ * As crypto_rand_, but extract the result from a crypto_fast_rng_t.
+ */
+double
+crypto_fast_rng_get_double(crypto_fast_rng_t *rng)
+{
+ unsigned int u;
+ crypto_fast_rng_getbytes(rng, (void*)&u, sizeof(u));
+ return ((double)u) / UINT_MAX_AS_DOUBLE;
+}
diff --git a/src/lib/crypt_ops/crypto_rsa.c b/src/lib/crypt_ops/crypto_rsa.c
index a510e12964..c9189b0dfc 100644
--- a/src/lib/crypt_ops/crypto_rsa.c
+++ b/src/lib/crypt_ops/crypto_rsa.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -21,6 +21,7 @@
#include "lib/log/util_bug.h"
#include "lib/fs/files.h"
+#include "lib/log/escape.h"
#include "lib/log/log.h"
#include "lib/encoding/binascii.h"
#include "lib/encoding/pem.h"
@@ -30,6 +31,10 @@
#include <sys/stat.h>
#endif
+#ifdef ENABLE_OPENSSL
+#include <openssl/rsa.h>
+#endif
+
/** Return the number of bytes added by padding method <b>padding</b>.
*/
int
@@ -484,11 +489,13 @@ crypto_pk_write_private_key_to_string(crypto_pk_t *env,
*/
static int
crypto_pk_read_from_string_generic(crypto_pk_t *env, const char *src,
- size_t len, bool private_key)
+ size_t len, int severity,
+ bool private_key)
{
if (len == (size_t)-1) // "-1" indicates "use the length of the string."
len = strlen(src);
+ const char *ktype = private_key ? "private key" : "public key";
const char *tag =
private_key ? RSA_PRIVATE_TAG : RSA_PUBLIC_TAG;
size_t buflen = len;
@@ -496,14 +503,20 @@ crypto_pk_read_from_string_generic(crypto_pk_t *env, const char *src,
int rv = -1;
int n = pem_decode(buf, buflen, src, len, tag);
- if (n < 0)
+ if (n < 0) {
+ log_fn(severity, LD_CRYPTO,
+ "Error decoding PEM wrapper while reading %s", ktype);
goto done;
+ }
crypto_pk_t *pk = private_key
? crypto_pk_asn1_decode_private((const char*)buf, n)
: crypto_pk_asn1_decode((const char*)buf, n);
- if (! pk)
+ if (! pk) {
+ log_fn(severity, LD_CRYPTO,
+ "Error decoding ASN.1 while reading %s", ktype);
goto done;
+ }
if (private_key)
crypto_pk_assign_private(env, pk);
@@ -526,7 +539,7 @@ int
crypto_pk_read_public_key_from_string(crypto_pk_t *env,
const char *src, size_t len)
{
- return crypto_pk_read_from_string_generic(env, src, len, false);
+ return crypto_pk_read_from_string_generic(env, src, len, LOG_INFO, false);
}
/** Read a PEM-encoded private key from the <b>len</b>-byte string <b>src</b>
@@ -537,7 +550,7 @@ int
crypto_pk_read_private_key_from_string(crypto_pk_t *env,
const char *src, ssize_t len)
{
- return crypto_pk_read_from_string_generic(env, src, len, true);
+ return crypto_pk_read_from_string_generic(env, src, len, LOG_INFO, true);
}
/** If a file is longer than this, we won't try to decode its private key */
@@ -552,15 +565,24 @@ crypto_pk_read_private_key_from_filename(crypto_pk_t *env,
{
struct stat st;
char *buf = read_file_to_str(keyfile, 0, &st);
- if (!buf)
+ if (!buf) {
+ log_warn(LD_CRYPTO, "Unable to read file for private key in %s",
+ escaped(keyfile));
return -1;
+ }
if (st.st_size > MAX_PRIVKEY_FILE_LEN) {
+ log_warn(LD_CRYPTO, "Private key file %s was far too large.",
+ escaped(keyfile));
tor_free(buf);
return -1;
}
- int rv = crypto_pk_read_private_key_from_string(env, buf,
- (ssize_t)st.st_size);
+ int rv = crypto_pk_read_from_string_generic(env, buf, (ssize_t)st.st_size,
+ LOG_WARN, true);
+ if (rv < 0) {
+ log_warn(LD_CRYPTO, "Unable to decode private key from file %s",
+ escaped(keyfile));
+ }
memwipe(buf, 0, (size_t)st.st_size);
tor_free(buf);
return rv;
diff --git a/src/lib/crypt_ops/crypto_rsa.h b/src/lib/crypt_ops/crypto_rsa.h
index 007964b268..c1ea767f85 100644
--- a/src/lib/crypt_ops/crypto_rsa.h
+++ b/src/lib/crypt_ops/crypto_rsa.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_rsa_nss.c b/src/lib/crypt_ops/crypto_rsa_nss.c
index dc282d7c9d..ad2ad38b66 100644
--- a/src/lib/crypt_ops/crypto_rsa_nss.c
+++ b/src/lib/crypt_ops/crypto_rsa_nss.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_rsa_openssl.c b/src/lib/crypt_ops/crypto_rsa_openssl.c
index df81c963eb..fbdc76ccd6 100644
--- a/src/lib/crypt_ops/crypto_rsa_openssl.c
+++ b/src/lib/crypt_ops/crypto_rsa_openssl.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_s2k.c b/src/lib/crypt_ops/crypto_s2k.c
index e0b2f40bb3..42276597d4 100644
--- a/src/lib/crypt_ops/crypto_s2k.c
+++ b/src/lib/crypt_ops/crypto_s2k.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_s2k.h b/src/lib/crypt_ops/crypto_s2k.h
index 2429185b52..a16a3d781e 100644
--- a/src/lib/crypt_ops/crypto_s2k.h
+++ b/src/lib/crypt_ops/crypto_s2k.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_sys.h b/src/lib/crypt_ops/crypto_sys.h
index 31644d088b..894243b175 100644
--- a/src/lib/crypt_ops/crypto_sys.h
+++ b/src/lib/crypt_ops/crypto_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_util.c b/src/lib/crypt_ops/crypto_util.c
index 64b4e6b71b..67a1a9eb92 100644
--- a/src/lib/crypt_ops/crypto_util.c
+++ b/src/lib/crypt_ops/crypto_util.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/crypto_util.h b/src/lib/crypt_ops/crypto_util.h
index e032263225..613a1bd0dd 100644
--- a/src/lib/crypt_ops/crypto_util.h
+++ b/src/lib/crypt_ops/crypto_util.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/digestset.c b/src/lib/crypt_ops/digestset.c
index 84516e0172..c931b58369 100644
--- a/src/lib/crypt_ops/digestset.c
+++ b/src/lib/crypt_ops/digestset.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/digestset.h b/src/lib/crypt_ops/digestset.h
index 328979ae0d..91d53a0542 100644
--- a/src/lib/crypt_ops/digestset.h
+++ b/src/lib/crypt_ops/digestset.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/crypt_ops/include.am b/src/lib/crypt_ops/include.am
index d0ccc13bff..4730440143 100644
--- a/src/lib/crypt_ops/include.am
+++ b/src/lib/crypt_ops/include.am
@@ -17,6 +17,8 @@ src_lib_libtor_crypt_ops_a_SOURCES = \
src/lib/crypt_ops/crypto_ope.c \
src/lib/crypt_ops/crypto_pwbox.c \
src/lib/crypt_ops/crypto_rand.c \
+ src/lib/crypt_ops/crypto_rand_fast.c \
+ src/lib/crypt_ops/crypto_rand_numeric.c \
src/lib/crypt_ops/crypto_rsa.c \
src/lib/crypt_ops/crypto_s2k.c \
src/lib/crypt_ops/crypto_util.c \
diff --git a/src/lib/ctime/di_ops.c b/src/lib/ctime/di_ops.c
index 73441f84f8..89e0837ae9 100644
--- a/src/lib/ctime/di_ops.c
+++ b/src/lib/ctime/di_ops.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/ctime/di_ops.h b/src/lib/ctime/di_ops.h
index 92af7ae278..264b56a8c1 100644
--- a/src/lib/ctime/di_ops.h
+++ b/src/lib/ctime/di_ops.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/defs/dh_sizes.h b/src/lib/defs/dh_sizes.h
index a02ffc5281..a2ffbc51c2 100644
--- a/src/lib/defs/dh_sizes.h
+++ b/src/lib/defs/dh_sizes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/defs/digest_sizes.h b/src/lib/defs/digest_sizes.h
index dd772cae07..525e5209d6 100644
--- a/src/lib/defs/digest_sizes.h
+++ b/src/lib/defs/digest_sizes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_DIGEST_SIZES_H
diff --git a/src/lib/defs/include.am b/src/lib/defs/include.am
index 48ee7f29fc..6a7f9114ea 100644
--- a/src/lib/defs/include.am
+++ b/src/lib/defs/include.am
@@ -2,4 +2,5 @@
noinst_HEADERS += \
src/lib/defs/dh_sizes.h \
src/lib/defs/digest_sizes.h \
+ src/lib/defs/time.h \
src/lib/defs/x25519_sizes.h
diff --git a/src/lib/defs/time.h b/src/lib/defs/time.h
new file mode 100644
index 0000000000..c25f5022c5
--- /dev/null
+++ b/src/lib/defs/time.h
@@ -0,0 +1,23 @@
+/* Copyright (c) 2001, Matej Pfajfar.
+ * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef TOR_TIME_DEFS_H
+#define TOR_TIME_DEFS_H
+
+/**
+ * \file time.h
+ *
+ * \brief Definitions for timing-related constants.
+ **/
+
+/** How many microseconds per second */
+#define TOR_USEC_PER_SEC (1000000)
+/** How many nanoseconds per microsecond */
+#define TOR_NSEC_PER_USEC (1000)
+/* How many nanoseconds per millisecond */
+#define TOR_NSEC_PER_MSEC (1000*1000)
+
+#endif
diff --git a/src/lib/defs/x25519_sizes.h b/src/lib/defs/x25519_sizes.h
index d8ada46b97..8933a8866b 100644
--- a/src/lib/defs/x25519_sizes.h
+++ b/src/lib/defs/x25519_sizes.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/binascii.c b/src/lib/encoding/binascii.c
index 067db075ad..de4d1648bb 100644
--- a/src/lib/encoding/binascii.c
+++ b/src/lib/encoding/binascii.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/binascii.h b/src/lib/encoding/binascii.h
index c71ba65dfb..44998bb85b 100644
--- a/src/lib/encoding/binascii.h
+++ b/src/lib/encoding/binascii.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/confline.c b/src/lib/encoding/confline.c
index 71ce5b8424..8110f3dd9c 100644
--- a/src/lib/encoding/confline.c
+++ b/src/lib/encoding/confline.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/confline.h b/src/lib/encoding/confline.h
index 41f1200947..3d9ae8a662 100644
--- a/src/lib/encoding/confline.h
+++ b/src/lib/encoding/confline.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/cstring.c b/src/lib/encoding/cstring.c
index 69aa7f3da5..29d3714126 100644
--- a/src/lib/encoding/cstring.c
+++ b/src/lib/encoding/cstring.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/cstring.h b/src/lib/encoding/cstring.h
index 2da109d958..904a2c9c1c 100644
--- a/src/lib/encoding/cstring.h
+++ b/src/lib/encoding/cstring.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/keyval.c b/src/lib/encoding/keyval.c
index d5e4e4e438..c5da5a0bfc 100644
--- a/src/lib/encoding/keyval.c
+++ b/src/lib/encoding/keyval.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/keyval.h b/src/lib/encoding/keyval.h
index 8bf0797627..cd327b7a82 100644
--- a/src/lib/encoding/keyval.h
+++ b/src/lib/encoding/keyval.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/kvline.c b/src/lib/encoding/kvline.c
index 11ff4f0f96..307adc3f12 100644
--- a/src/lib/encoding/kvline.c
+++ b/src/lib/encoding/kvline.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/kvline.h b/src/lib/encoding/kvline.h
index 3272cc1754..4eed30a223 100644
--- a/src/lib/encoding/kvline.h
+++ b/src/lib/encoding/kvline.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/pem.c b/src/lib/encoding/pem.c
index 0d4a814f6f..24b238b130 100644
--- a/src/lib/encoding/pem.c
+++ b/src/lib/encoding/pem.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/pem.h b/src/lib/encoding/pem.h
index ba21228848..0bbb06a794 100644
--- a/src/lib/encoding/pem.h
+++ b/src/lib/encoding/pem.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/encoding/time_fmt.c b/src/lib/encoding/time_fmt.c
index 233d0dddff..40543d41e0 100644
--- a/src/lib/encoding/time_fmt.c
+++ b/src/lib/encoding/time_fmt.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -39,6 +39,8 @@
*
* Convert *<b>timep</b> to a struct tm in local time, and store the value in
* *<b>result</b>. Return the result on success, or NULL on failure.
+ *
+ * Treat malformatted inputs localtime outputs as a BUG.
*/
struct tm *
tor_localtime_r(const time_t *timep, struct tm *result)
@@ -56,6 +58,8 @@ tor_localtime_r(const time_t *timep, struct tm *result)
*
* Convert *<b>timep</b> to a struct tm in UTC, and store the value in
* *<b>result</b>. Return the result on success, or NULL on failure.
+ *
+ * Treat malformatted inputs or gmtime outputs as a BUG.
*/
struct tm *
tor_gmtime_r(const time_t *timep, struct tm *result)
diff --git a/src/lib/encoding/time_fmt.h b/src/lib/encoding/time_fmt.h
index 2892442adf..0ddeca57fc 100644
--- a/src/lib/encoding/time_fmt.h
+++ b/src/lib/encoding/time_fmt.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/err/backtrace.c b/src/lib/err/backtrace.c
index b568c888c5..1d1b3bcfa3 100644
--- a/src/lib/err/backtrace.c
+++ b/src/lib/err/backtrace.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/err/backtrace.h b/src/lib/err/backtrace.h
index 70c43484f5..9b313261e6 100644
--- a/src/lib/err/backtrace.h
+++ b/src/lib/err/backtrace.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_BACKTRACE_H
diff --git a/src/lib/err/torerr.c b/src/lib/err/torerr.c
index e9de86837f..ecffb7f7bb 100644
--- a/src/lib/err/torerr.c
+++ b/src/lib/err/torerr.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/err/torerr.h b/src/lib/err/torerr.h
index b415ef73ef..0badaf7c6d 100644
--- a/src/lib/err/torerr.h
+++ b/src/lib/err/torerr.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/err/torerr_sys.c b/src/lib/err/torerr_sys.c
index 96bb1308a4..3ab1b3c4e1 100644
--- a/src/lib/err/torerr_sys.c
+++ b/src/lib/err/torerr_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/err/torerr_sys.h b/src/lib/err/torerr_sys.h
index b56270d538..c947695689 100644
--- a/src/lib/err/torerr_sys.h
+++ b/src/lib/err/torerr_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/compat_libevent.c b/src/lib/evloop/compat_libevent.c
index 2ee71c5598..91eacb9938 100644
--- a/src/lib/evloop/compat_libevent.c
+++ b/src/lib/evloop/compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2018, The Tor Project, Inc. */
+/* Copyright (c) 2009-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/compat_libevent.h b/src/lib/evloop/compat_libevent.h
index 5fda49f741..afe887a013 100644
--- a/src/lib/evloop/compat_libevent.h
+++ b/src/lib/evloop/compat_libevent.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2018, The Tor Project, Inc. */
+/* Copyright (c) 2009-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/procmon.c b/src/lib/evloop/procmon.c
index 02e167377f..52469fa5fc 100644
--- a/src/lib/evloop/procmon.c
+++ b/src/lib/evloop/procmon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/procmon.h b/src/lib/evloop/procmon.h
index 42c3788692..6caae5be86 100644
--- a/src/lib/evloop/procmon.h
+++ b/src/lib/evloop/procmon.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/timers.c b/src/lib/evloop/timers.c
index 6743b6af51..4b2a96ef7d 100644
--- a/src/lib/evloop/timers.c
+++ b/src/lib/evloop/timers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/timers.h b/src/lib/evloop/timers.h
index 4ffed1b458..7595554204 100644
--- a/src/lib/evloop/timers.h
+++ b/src/lib/evloop/timers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/token_bucket.c b/src/lib/evloop/token_bucket.c
index f7cd05c6c5..ee6d631e3b 100644
--- a/src/lib/evloop/token_bucket.c
+++ b/src/lib/evloop/token_bucket.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/token_bucket.h b/src/lib/evloop/token_bucket.h
index f004358f47..9398d2baa3 100644
--- a/src/lib/evloop/token_bucket.h
+++ b/src/lib/evloop/token_bucket.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/evloop/workqueue.h b/src/lib/evloop/workqueue.h
index 10d5d47464..d0ee8f2be2 100644
--- a/src/lib/evloop/workqueue.h
+++ b/src/lib/evloop/workqueue.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fdio/fdio.c b/src/lib/fdio/fdio.c
index afb57e03dd..6c87af791d 100644
--- a/src/lib/fdio/fdio.c
+++ b/src/lib/fdio/fdio.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fdio/fdio.h b/src/lib/fdio/fdio.h
index c8f05455b7..8395af353b 100644
--- a/src/lib/fdio/fdio.h
+++ b/src/lib/fdio/fdio.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/conffile.c b/src/lib/fs/conffile.c
index d8622bff6b..7bb2f23931 100644
--- a/src/lib/fs/conffile.c
+++ b/src/lib/fs/conffile.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/conffile.h b/src/lib/fs/conffile.h
index a926f4ac05..7af9119dbb 100644
--- a/src/lib/fs/conffile.h
+++ b/src/lib/fs/conffile.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_CONFFILE_H
diff --git a/src/lib/fs/dir.c b/src/lib/fs/dir.c
index 6c24460005..3c31e00d99 100644
--- a/src/lib/fs/dir.c
+++ b/src/lib/fs/dir.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/dir.h b/src/lib/fs/dir.h
index 61a04e6d58..826bc2dfc5 100644
--- a/src/lib/fs/dir.h
+++ b/src/lib/fs/dir.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_DIR_H
diff --git a/src/lib/fs/files.c b/src/lib/fs/files.c
index 43dcbad333..b98a51a287 100644
--- a/src/lib/fs/files.c
+++ b/src/lib/fs/files.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/files.h b/src/lib/fs/files.h
index 2ee1b20149..52c94c914f 100644
--- a/src/lib/fs/files.h
+++ b/src/lib/fs/files.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/freespace.c b/src/lib/fs/freespace.c
index c18b1e0234..ee0f93073d 100644
--- a/src/lib/fs/freespace.c
+++ b/src/lib/fs/freespace.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/lockfile.c b/src/lib/fs/lockfile.c
index ca1711c344..933ff1e02f 100644
--- a/src/lib/fs/lockfile.c
+++ b/src/lib/fs/lockfile.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/lockfile.h b/src/lib/fs/lockfile.h
index e26349811c..8aeee4cc7f 100644
--- a/src/lib/fs/lockfile.h
+++ b/src/lib/fs/lockfile.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/mmap.c b/src/lib/fs/mmap.c
index e7da6fc63a..daaee1f9b1 100644
--- a/src/lib/fs/mmap.c
+++ b/src/lib/fs/mmap.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/mmap.h b/src/lib/fs/mmap.h
index 8d6ca9a0e2..18fb18a13c 100644
--- a/src/lib/fs/mmap.h
+++ b/src/lib/fs/mmap.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/path.c b/src/lib/fs/path.c
index eb5170920c..b3ef61979d 100644
--- a/src/lib/fs/path.c
+++ b/src/lib/fs/path.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/path.h b/src/lib/fs/path.h
index 384d1f514f..4675ac84e8 100644
--- a/src/lib/fs/path.h
+++ b/src/lib/fs/path.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/storagedir.c b/src/lib/fs/storagedir.c
index 014eb4d9eb..2caddf1ad9 100644
--- a/src/lib/fs/storagedir.c
+++ b/src/lib/fs/storagedir.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/storagedir.h b/src/lib/fs/storagedir.h
index 58594b4634..7e6633a0bb 100644
--- a/src/lib/fs/storagedir.h
+++ b/src/lib/fs/storagedir.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/userdb.c b/src/lib/fs/userdb.c
index df2935baa8..95205c670e 100644
--- a/src/lib/fs/userdb.c
+++ b/src/lib/fs/userdb.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/userdb.h b/src/lib/fs/userdb.h
index 3b3ab6ed2b..5c39794873 100644
--- a/src/lib/fs/userdb.h
+++ b/src/lib/fs/userdb.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/winlib.c b/src/lib/fs/winlib.c
index 532807c03f..b7302bd4ca 100644
--- a/src/lib/fs/winlib.c
+++ b/src/lib/fs/winlib.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/fs/winlib.h b/src/lib/fs/winlib.h
index 5b10b9b78d..64a22439e5 100644
--- a/src/lib/fs/winlib.h
+++ b/src/lib/fs/winlib.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/geoip/country.h b/src/lib/geoip/country.h
index 080c156023..9a8911d494 100644
--- a/src/lib/geoip/country.h
+++ b/src/lib/geoip/country.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_COUNTRY_H
diff --git a/src/lib/geoip/geoip.c b/src/lib/geoip/geoip.c
index b1c0973d03..70b1c2dc8c 100644
--- a/src/lib/geoip/geoip.c
+++ b/src/lib/geoip/geoip.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/geoip/geoip.h b/src/lib/geoip/geoip.h
index 6ef27d66d0..f872ebd25f 100644
--- a/src/lib/geoip/geoip.h
+++ b/src/lib/geoip/geoip.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/addsub.c b/src/lib/intmath/addsub.c
index fcfdca6822..12146f4e72 100644
--- a/src/lib/intmath/addsub.c
+++ b/src/lib/intmath/addsub.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/addsub.h b/src/lib/intmath/addsub.h
index 5bbc32e4a9..83efa82919 100644
--- a/src/lib/intmath/addsub.h
+++ b/src/lib/intmath/addsub.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/bits.c b/src/lib/intmath/bits.c
index 7da524449d..2158790e3f 100644
--- a/src/lib/intmath/bits.c
+++ b/src/lib/intmath/bits.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/bits.h b/src/lib/intmath/bits.h
index 80eebe9358..c1483a18b8 100644
--- a/src/lib/intmath/bits.h
+++ b/src/lib/intmath/bits.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/cmp.h b/src/lib/intmath/cmp.h
index 11b6fdf98e..67a738861b 100644
--- a/src/lib/intmath/cmp.h
+++ b/src/lib/intmath/cmp.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/logic.h b/src/lib/intmath/logic.h
index b3eabc652e..a4cecd69cc 100644
--- a/src/lib/intmath/logic.h
+++ b/src/lib/intmath/logic.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/muldiv.c b/src/lib/intmath/muldiv.c
index c5fc689e2d..6a292db7ba 100644
--- a/src/lib/intmath/muldiv.c
+++ b/src/lib/intmath/muldiv.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/muldiv.h b/src/lib/intmath/muldiv.h
index 45b896922f..64500b6dce 100644
--- a/src/lib/intmath/muldiv.h
+++ b/src/lib/intmath/muldiv.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/weakrng.c b/src/lib/intmath/weakrng.c
index 36cf5fb0aa..99c9252c2b 100644
--- a/src/lib/intmath/weakrng.c
+++ b/src/lib/intmath/weakrng.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/intmath/weakrng.h b/src/lib/intmath/weakrng.h
index 679bf2449c..e26bf58cbb 100644
--- a/src/lib/intmath/weakrng.h
+++ b/src/lib/intmath/weakrng.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/lock/compat_mutex.c b/src/lib/lock/compat_mutex.c
index b53676cf49..4ad5929715 100644
--- a/src/lib/lock/compat_mutex.c
+++ b/src/lib/lock/compat_mutex.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/lock/compat_mutex.h b/src/lib/lock/compat_mutex.h
index f8689422b1..b63ce24024 100644
--- a/src/lib/lock/compat_mutex.h
+++ b/src/lib/lock/compat_mutex.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/lock/compat_mutex_pthreads.c b/src/lib/lock/compat_mutex_pthreads.c
index 983abf5ae5..ee5f520cd0 100644
--- a/src/lib/lock/compat_mutex_pthreads.c
+++ b/src/lib/lock/compat_mutex_pthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/lock/compat_mutex_winthreads.c b/src/lib/lock/compat_mutex_winthreads.c
index 22c1edeed4..b0f5999e42 100644
--- a/src/lib/lock/compat_mutex_winthreads.c
+++ b/src/lib/lock/compat_mutex_winthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/escape.c b/src/lib/log/escape.c
index 37d7e0fdc4..6ca01c6963 100644
--- a/src/lib/log/escape.c
+++ b/src/lib/log/escape.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/escape.h b/src/lib/log/escape.h
index f47e7e004d..2f726186c5 100644
--- a/src/lib/log/escape.h
+++ b/src/lib/log/escape.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/log.c b/src/lib/log/log.c
index d032f57add..d21d8d1d41 100644
--- a/src/lib/log/log.c
+++ b/src/lib/log/log.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/log.h b/src/lib/log/log.h
index 423e58e11b..dbc1c47021 100644
--- a/src/lib/log/log.h
+++ b/src/lib/log/log.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/log_sys.c b/src/lib/log/log_sys.c
index e20f3156ca..d1080f2264 100644
--- a/src/lib/log/log_sys.c
+++ b/src/lib/log/log_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/log_sys.h b/src/lib/log/log_sys.h
index f7afbb279d..7043253066 100644
--- a/src/lib/log/log_sys.h
+++ b/src/lib/log/log_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/ratelim.c b/src/lib/log/ratelim.c
index 2d0e8b17ca..5eec742aa7 100644
--- a/src/lib/log/ratelim.c
+++ b/src/lib/log/ratelim.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/ratelim.h b/src/lib/log/ratelim.h
index d423e10b85..48edd7c849 100644
--- a/src/lib/log/ratelim.h
+++ b/src/lib/log/ratelim.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/util_bug.c b/src/lib/log/util_bug.c
index b23f4edc97..f42d2d2ab4 100644
--- a/src/lib/log/util_bug.c
+++ b/src/lib/log/util_bug.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/util_bug.h b/src/lib/log/util_bug.h
index 557d932ac3..18d40bbf39 100644
--- a/src/lib/log/util_bug.h
+++ b/src/lib/log/util_bug.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/win32err.c b/src/lib/log/win32err.c
index 41f563bfa5..dc45cb4c3d 100644
--- a/src/lib/log/win32err.c
+++ b/src/lib/log/win32err.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/log/win32err.h b/src/lib/log/win32err.h
index 92958c9879..33413dfd15 100644
--- a/src/lib/log/win32err.h
+++ b/src/lib/log/win32err.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/malloc/include.am b/src/lib/malloc/include.am
index 502cc1c6b7..95d96168e1 100644
--- a/src/lib/malloc/include.am
+++ b/src/lib/malloc/include.am
@@ -6,7 +6,8 @@ noinst_LIBRARIES += src/lib/libtor-malloc-testing.a
endif
src_lib_libtor_malloc_a_SOURCES = \
- src/lib/malloc/malloc.c
+ src/lib/malloc/malloc.c \
+ src/lib/malloc/map_anon.c
if USE_OPENBSD_MALLOC
src_lib_libtor_malloc_a_SOURCES += src/ext/OpenBSD_malloc_Linux.c
@@ -18,4 +19,5 @@ src_lib_libtor_malloc_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_lib_libtor_malloc_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
noinst_HEADERS += \
- src/lib/malloc/malloc.h
+ src/lib/malloc/malloc.h \
+ src/lib/malloc/map_anon.h
diff --git a/src/lib/malloc/malloc.c b/src/lib/malloc/malloc.c
index 271e84071a..8628acfc97 100644
--- a/src/lib/malloc/malloc.c
+++ b/src/lib/malloc/malloc.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/malloc/malloc.h b/src/lib/malloc/malloc.h
index 26ee30742e..ef6b509ca4 100644
--- a/src/lib/malloc/malloc.h
+++ b/src/lib/malloc/malloc.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/malloc/map_anon.c b/src/lib/malloc/map_anon.c
new file mode 100644
index 0000000000..2fc6e89ea2
--- /dev/null
+++ b/src/lib/malloc/map_anon.c
@@ -0,0 +1,213 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file map_anon.c
+ * \brief Manage anonymous mappings.
+ **/
+
+#include "orconfig.h"
+#include "lib/malloc/map_anon.h"
+#include "lib/malloc/malloc.h"
+#include "lib/err/torerr.h"
+
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_MACH_VM_INHERIT_H
+#include <mach/vm_inherit.h>
+#endif
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
+/**
+ * Macro to get the high bytes of a size_t, if there are high bytes.
+ * Windows needs this; other operating systems define a size_t that does
+ * what it should.
+ */
+#if SIZEOF_SIZE_T > 4
+#define HIGH_SIZE_T_BYTES(sz) ((sz) >> 32)
+#else
+#define HIGH_SIZE_T_BYTES(sz) (0)
+#endif
+
+/* Here we define a MINHERIT macro that is minherit() or madvise(), depending
+ * on what we actually want.
+ *
+ * If there's a flag that sets pages to zero after fork, we define FLAG_ZERO
+ * to be that flag. If there's a flag unmaps pages after fork, we define
+ * FLAG_NOINHERIT to be that flag.
+ */
+#if defined(HAVE_MINHERIT)
+#define MINHERIT minherit
+
+#ifdef INHERIT_ZERO
+#define FLAG_ZERO INHERIT_ZERO
+#endif
+#ifdef INHERIT_NONE
+#define FLAG_NOINHERIT INHERIT_NONE
+#elif defined(VM_INHERIT_NONE)
+#define FLAG_NOINHERIT VM_INHERIT_NONE
+#endif
+
+#elif defined(HAVE_MADVISE)
+
+#define MINHERIT madvise
+
+#ifdef MADV_WIPEONFORK
+#define FLAG_ZERO MADV_WIPEONFORK
+#endif
+#ifdef MADV_DONTFORK
+#define FLAG_NOINHERIT MADV_DONTFORK
+#endif
+
+#endif
+
+/**
+ * Helper: try to prevent the <b>sz</b> bytes at <b>mem</b> from being swapped
+ * to disk. Return 0 on success or if the facility is not available on this
+ * OS; return -1 on failure.
+ */
+static int
+lock_mem(void *mem, size_t sz)
+{
+#ifdef _WIN32
+ return VirtualLock(mem, sz) ? 0 : -1;
+#elif defined(HAVE_MLOCK)
+ return mlock(mem, sz);
+#else
+ (void) mem;
+ (void) sz;
+
+ return 0;
+#endif
+}
+
+/**
+ * Helper: try to prevent the <b>sz</b> bytes at <b>mem</b> from appearing in
+ * a core dump. Return 0 on success or if the facility is not available on
+ * this OS; return -1 on failure.
+ */
+static int
+nodump_mem(void *mem, size_t sz)
+{
+#if defined(MADV_DONTDUMP)
+ return madvise(mem, sz, MADV_DONTDUMP);
+#else
+ (void) mem;
+ (void) sz;
+ return 0;
+#endif
+}
+
+/**
+ * Helper: try to prevent the <b>sz</b> bytes at <b>mem</b> from being
+ * accessible in child processes -- ideally by having them set to 0 after a
+ * fork, and if that doesn't work, by having them unmapped after a fork.
+ * Return 0 on success or if the facility is not available on this OS; return
+ * -1 on failure.
+ */
+static int
+noinherit_mem(void *mem, size_t sz)
+{
+#ifdef FLAG_ZERO
+ int r = MINHERIT(mem, sz, FLAG_ZERO);
+ if (r == 0)
+ return 0;
+#endif
+#ifdef FLAG_NOINHERIT
+ return MINHERIT(mem, sz, FLAG_NOINHERIT);
+#else
+ (void)mem;
+ (void)sz;
+ return 0;
+#endif
+}
+
+/**
+ * Return a new anonymous memory mapping that holds <b>sz</b> bytes.
+ *
+ * Memory mappings are unlike the results from malloc() in that they are
+ * handled separately by the operating system, and as such can have different
+ * kernel-level flags set on them.
+ *
+ * The "flags" argument may be zero or more of ANONMAP_PRIVATE and
+ * ANONMAP_NOINHERIT.
+ *
+ * Memory returned from this function must be released with
+ * tor_munmap_anonymous().
+ *
+ * [Note: OS people use the word "anonymous" here to mean that the memory
+ * isn't associated with any file. This has *nothing* to do with the kind of
+ * anonymity that Tor is trying to provide.]
+ */
+void *
+tor_mmap_anonymous(size_t sz, unsigned flags)
+{
+ void *ptr;
+#if defined(_WIN32)
+ HANDLE mapping = CreateFileMapping(INVALID_HANDLE_VALUE,
+ NULL, /*attributes*/
+ PAGE_READWRITE,
+ HIGH_SIZE_T_BYTES(sz),
+ sz & 0xffffffff,
+ NULL /* name */);
+ raw_assert(mapping != NULL);
+ ptr = MapViewOfFile(mapping, FILE_MAP_WRITE,
+ 0, 0, /* Offset */
+ 0 /* Extend to end of mapping */);
+ raw_assert(ptr);
+ CloseHandle(mapping); /* mapped view holds a reference */
+#elif defined(HAVE_SYS_MMAN_H)
+ ptr = mmap(NULL, sz,
+ PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_PRIVATE,
+ -1, 0);
+ raw_assert(ptr != MAP_FAILED);
+ raw_assert(ptr != NULL);
+#else
+ ptr = tor_malloc_zero(sz);
+#endif
+
+ if (flags & ANONMAP_PRIVATE) {
+ int lock_result = lock_mem(ptr, sz);
+ raw_assert(lock_result == 0);
+ int nodump_result = nodump_mem(ptr, sz);
+ raw_assert(nodump_result == 0);
+ }
+
+ if (flags & ANONMAP_NOINHERIT) {
+ int noinherit_result = noinherit_mem(ptr, sz);
+ raw_assert(noinherit_result == 0);
+ }
+
+ return ptr;
+}
+
+/**
+ * Release <b>sz</b> bytes of memory that were previously mapped at
+ * <b>mapping</b> by tor_mmap_anonymous().
+ **/
+void
+tor_munmap_anonymous(void *mapping, size_t sz)
+{
+ if (!mapping)
+ return;
+
+#if defined(_WIN32)
+ (void)sz;
+ UnmapViewOfFile(mapping);
+#elif defined(HAVE_SYS_MMAN_H)
+ munmap(mapping, sz);
+#else
+ (void)sz;
+ tor_free(mapping);
+#endif
+}
diff --git a/src/lib/malloc/map_anon.h b/src/lib/malloc/map_anon.h
new file mode 100644
index 0000000000..cc5797e4ec
--- /dev/null
+++ b/src/lib/malloc/map_anon.h
@@ -0,0 +1,37 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file map_anon.h
+ * \brief Headers for map_anon.c
+ **/
+
+#ifndef TOR_MAP_ANON_H
+#define TOR_MAP_ANON_H
+
+#include "lib/malloc/malloc.h"
+#include <stddef.h>
+
+/**
+ * When this flag is specified, try to prevent the mapping from being
+ * swapped or dumped.
+ *
+ * In some operating systems, this flag is not implemented.
+ */
+#define ANONMAP_PRIVATE (1u<<0)
+/**
+ * When this flag is specified, try to prevent the mapping from being
+ * inherited after a fork(). In some operating systems, trying to access it
+ * afterwards will cause its contents to be zero. In others, trying to access
+ * it afterwards will cause a crash.
+ *
+ * In some operating systems, this flag is not implemented at all.
+ */
+#define ANONMAP_NOINHERIT (1u<<1)
+
+void *tor_mmap_anonymous(size_t sz, unsigned flags);
+void tor_munmap_anonymous(void *mapping, size_t sz);
+
+#endif /* !defined(TOR_MAP_ANON_H) */
diff --git a/src/lib/math/.may_include b/src/lib/math/.may_include
index 1fd26864dc..f8bc264a5f 100644
--- a/src/lib/math/.may_include
+++ b/src/lib/math/.may_include
@@ -3,3 +3,5 @@ orconfig.h
lib/cc/*.h
lib/log/*.h
lib/math/*.h
+lib/testsupport/*.h
+lib/crypt_ops/*.h
diff --git a/src/lib/math/fp.c b/src/lib/math/fp.c
index d5989db637..52c57c1d7f 100644
--- a/src/lib/math/fp.c
+++ b/src/lib/math/fp.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -117,3 +117,28 @@ ENABLE_GCC_WARNING(double-promotion)
ENABLE_GCC_WARNING(float-conversion)
#endif
}
+
+/* isinf() wrapper for tor */
+int
+tor_isinf(double x)
+{
+ /* Same as above, work around the "double promotion" warnings */
+#if defined(MINGW_ANY) && GCC_VERSION >= 409
+#define PROBLEMATIC_FLOAT_CONVERSION_WARNING
+DISABLE_GCC_WARNING(float-conversion)
+#endif /* defined(MINGW_ANY) && GCC_VERSION >= 409 */
+#if defined(__clang__)
+#if __has_warning("-Wdouble-promotion")
+#define PROBLEMATIC_DOUBLE_PROMOTION_WARNING
+DISABLE_GCC_WARNING(double-promotion)
+#endif
+#endif /* defined(__clang__) */
+ return isinf(x);
+#ifdef PROBLEMATIC_DOUBLE_PROMOTION_WARNING
+ENABLE_GCC_WARNING(double-promotion)
+#endif
+#ifdef PROBLEMATIC_FLOAT_CONVERSION_WARNING
+ENABLE_GCC_WARNING(float-conversion)
+#endif
+}
+
diff --git a/src/lib/math/fp.h b/src/lib/math/fp.h
index e27b8f8d80..cb24649e6c 100644
--- a/src/lib/math/fp.h
+++ b/src/lib/math/fp.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -19,5 +19,6 @@ double tor_mathlog(double d) ATTR_CONST;
long tor_lround(double d) ATTR_CONST;
int64_t tor_llround(double d) ATTR_CONST;
int64_t clamp_double_to_int64(double number);
+int tor_isinf(double x);
#endif
diff --git a/src/lib/math/include.am b/src/lib/math/include.am
index b088b3f3cc..6d65ce90a7 100644
--- a/src/lib/math/include.am
+++ b/src/lib/math/include.am
@@ -7,7 +7,8 @@ endif
src_lib_libtor_math_a_SOURCES = \
src/lib/math/fp.c \
- src/lib/math/laplace.c
+ src/lib/math/laplace.c \
+ src/lib/math/prob_distr.c
src_lib_libtor_math_testing_a_SOURCES = \
@@ -17,4 +18,5 @@ src_lib_libtor_math_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
noinst_HEADERS += \
src/lib/math/fp.h \
- src/lib/math/laplace.h
+ src/lib/math/laplace.h \
+ src/lib/math/prob_distr.h
diff --git a/src/lib/math/laplace.c b/src/lib/math/laplace.c
index 6b33b46902..302edb20b8 100644
--- a/src/lib/math/laplace.c
+++ b/src/lib/math/laplace.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/math/laplace.h b/src/lib/math/laplace.h
index 62d698e369..e8651e5197 100644
--- a/src/lib/math/laplace.h
+++ b/src/lib/math/laplace.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/math/prob_distr.c b/src/lib/math/prob_distr.c
new file mode 100644
index 0000000000..c952dadc06
--- /dev/null
+++ b/src/lib/math/prob_distr.c
@@ -0,0 +1,1717 @@
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file prob_distr.c
+ *
+ * \brief
+ * Implements various probability distributions.
+ * Almost all code is courtesy of Riastradh.
+ *
+ * \details
+ * Here are some details that might help you understand this file:
+ *
+ * - Throughout this file, `eps' means the largest relative error of a
+ * correctly rounded floating-point operation, which in binary64
+ * floating-point arithmetic is 2^-53. Here the relative error of a
+ * true value x from a computed value y is |x - y|/|x|. This
+ * definition of epsilon is conventional for numerical analysts when
+ * writing error analyses. (If your libm doesn't provide correctly
+ * rounded exp and log, their relative error is usually below 2*2^-53
+ * and probably closer to 1.1*2^-53 instead.)
+ *
+ * The C constant DBL_EPSILON is actually twice this, and should
+ * perhaps rather be named ulp(1) -- that is, it is the distance from
+ * 1 to the next greater floating-point number, which is usually of
+ * more interest to programmers and hardware engineers.
+ *
+ * Since this file is concerned mainly with error bounds rather than
+ * with low-level bit-hacking of floating-point numbers, we adopt the
+ * numerical analysts' definition in the comments, though we do use
+ * DBL_EPSILON in a handful of places where it is convenient to use
+ * some function of eps = DBL_EPSILON/2 in a case analysis.
+ *
+ * - In various functions (e.g. sample_log_logistic()) we jump through hoops so
+ * that we can use reals closer to 0 than closer to 1, since we achieve much
+ * greater accuracy for floating point numbers near 0. In particular, we can
+ * represent differences as small as 10^-300 for numbers near 0, but of no
+ * less than 10^-16 for numbers near 1.
+ **/
+
+#define PROB_DISTR_PRIVATE
+
+#include "orconfig.h"
+
+#include "lib/math/prob_distr.h"
+
+#include "lib/crypt_ops/crypto_rand.h"
+#include "lib/cc/ctassert.h"
+
+#include <float.h>
+#include <math.h>
+#include <stddef.h>
+
+/** Validators for downcasting macros below */
+#define validate_container_of(PTR, TYPE, FIELD) \
+ (0 * sizeof((PTR) - &((TYPE *)(((char *)(PTR)) - \
+ offsetof(TYPE, FIELD)))->FIELD))
+#define validate_const_container_of(PTR, TYPE, FIELD) \
+ (0 * sizeof((PTR) - &((const TYPE *)(((const char *)(PTR)) - \
+ offsetof(TYPE, FIELD)))->FIELD))
+/** Downcasting macro */
+#define container_of(PTR, TYPE, FIELD) \
+ ((TYPE *)(((char *)(PTR)) - offsetof(TYPE, FIELD)) \
+ + validate_container_of(PTR, TYPE, FIELD))
+/** Constified downcasting macro */
+#define const_container_of(PTR, TYPE, FIELD) \
+ ((const TYPE *)(((const char *)(PTR)) - offsetof(TYPE, FIELD)) \
+ + validate_const_container_of(PTR, TYPE, FIELD))
+
+/**
+ * Count number of one bits in 32-bit word.
+ */
+static unsigned
+bitcount32(uint32_t x)
+{
+
+ /* Count two-bit groups. */
+ x -= (x >> 1) & UINT32_C(0x55555555);
+
+ /* Count four-bit groups. */
+ x = ((x >> 2) & UINT32_C(0x33333333)) + (x & UINT32_C(0x33333333));
+
+ /* Count eight-bit groups. */
+ x = (x + (x >> 4)) & UINT32_C(0x0f0f0f0f);
+
+ /* Sum all eight-bit groups, and extract the sum. */
+ return (x * UINT32_C(0x01010101)) >> 24;
+}
+
+/**
+ * Count leading zeros in 32-bit word.
+ */
+static unsigned
+clz32(uint32_t x)
+{
+
+ /* Round up to a power of two. */
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ x |= x >> 16;
+
+ /* Subtract count of one bits from 32. */
+ return (32 - bitcount32(x));
+}
+
+/*
+ * Some lemmas that will be used throughout this file to prove various error
+ * bounds:
+ *
+ * Lemma 1. If |d| <= 1/2, then 1/(1 + d) <= 2.
+ *
+ * Proof. If 0 <= d <= 1/2, then 1 + d >= 1, so that 1/(1 + d) <= 1.
+ * If -1/2 <= d <= 0, then 1 + d >= 1/2, so that 1/(1 + d) <= 2. QED.
+ *
+ * Lemma 2. If b = a*(1 + d)/(1 + d') for |d'| < 1/2 and nonzero a, b,
+ * then b = a*(1 + e) for |e| <= 2|d' - d|.
+ *
+ * Proof. |a - b|/|a|
+ * = |a - a*(1 + d)/(1 + d')|/|a|
+ * = |1 - (1 + d)/(1 + d')|
+ * = |(1 + d' - 1 - d)/(1 + d')|
+ * = |(d' - d)/(1 + d')|
+ * <= 2|d' - d|, by Lemma 1,
+ *
+ * QED.
+ *
+ * Lemma 3. For |d|, |d'| < 1/4,
+ *
+ * |log((1 + d)/(1 + d'))| <= 4|d - d'|.
+ *
+ * Proof. Write
+ *
+ * log((1 + d)/(1 + d'))
+ * = log(1 + (1 + d)/(1 + d') - 1)
+ * = log(1 + (1 + d - 1 - d')/(1 + d')
+ * = log(1 + (d - d')/(1 + d')).
+ *
+ * By Lemma 1, |(d - d')/(1 + d')| < 2|d' - d| < 1, so the Taylor
+ * series of log(1 + x) converges absolutely for (d - d')/(1 + d'),
+ * and thus we have
+ *
+ * |log(1 + (d - d')/(1 + d'))|
+ * = |\sum_{n=1}^\infty ((d - d')/(1 + d'))^n/n|
+ * <= \sum_{n=1}^\infty |(d - d')/(1 + d')|^n/n
+ * <= \sum_{n=1}^\infty |2(d' - d)|^n/n
+ * <= \sum_{n=1}^\infty |2(d' - d)|^n
+ * = 1/(1 - |2(d' - d)|)
+ * <= 4|d' - d|,
+ *
+ * QED.
+ *
+ * Lemma 4. If 1/e <= 1 + x <= e, then
+ *
+ * log(1 + (1 + d) x) = (1 + d') log(1 + x)
+ *
+ * for |d'| < 8|d|.
+ *
+ * Proof. Write
+ *
+ * log(1 + (1 + d) x)
+ * = log(1 + x + x*d)
+ * = log((1 + x) (1 + x + x*d)/(1 + x))
+ * = log(1 + x) + log((1 + x + x*d)/(1 + x))
+ * = log(1 + x) (1 + log((1 + x + x*d)/(1 + x))/log(1 + x)).
+ *
+ * The relative error is bounded by
+ *
+ * |log((1 + x + x*d)/(1 + x))/log(1 + x)|
+ * <= 4|x + x*d - x|/|log(1 + x)|, by Lemma 3,
+ * = 4|x*d|/|log(1 + x)|
+ * < 8|d|,
+ *
+ * since in this range 0 < 1 - 1/e < x/log(1 + x) <= e - 1 < 2. QED.
+ */
+
+/**
+ * Compute the logistic function: f(x) = 1/(1 + e^{-x}) = e^x/(1 + e^x).
+ * Maps a log-odds-space probability in [-\infty, +\infty] into a direct-space
+ * probability in [0,1]. Inverse of logit.
+ *
+ * Ill-conditioned for large x; the identity logistic(-x) = 1 -
+ * logistic(x) and the function logistichalf(x) = logistic(x) - 1/2 may
+ * help to rearrange a computation.
+ *
+ * This implementation gives relative error bounded by 7 eps.
+ */
+STATIC double
+logistic(double x)
+{
+ if (x <= log(DBL_EPSILON/2)) {
+ /*
+ * If x <= log(DBL_EPSILON/2) = log(eps), then e^x <= eps. In this case
+ * we will approximate the logistic() function with e^x because the
+ * relative error is less than eps. Here is a calculation of the
+ * relative error between the logistic() function and e^x and a proof
+ * that it's less than eps:
+ *
+ * |e^x - e^x/(1 + e^x)|/|e^x/(1 + e^x)|
+ * <= |1 - 1/(1 + e^x)|*|1 + e^x|
+ * = |e^x/(1 + e^x)|*|1 + e^x|
+ * = |e^x|
+ * <= eps.
+ */
+ return exp(x); /* return e^x */
+ } else if (x <= -log(DBL_EPSILON/2)) {
+ /*
+ * e^{-x} > 0, so 1 + e^{-x} > 1, and 0 < 1/(1 +
+ * e^{-x}) < 1; further, since e^{-x} < 1 + e^{-x}, we
+ * also have 0 < 1/(1 + e^{-x}) < 1. Thus, if exp has
+ * relative error d0, + has relative error d1, and /
+ * has relative error d2, then we get
+ *
+ * (1 + d2)/[(1 + (1 + d0) e^{-x})(1 + d1)]
+ * = (1 + d0)/[1 + e^{-x} + d0 e^{-x}
+ * + d1 + d1 e^{-x} + d0 d1 e^{-x}]
+ * = (1 + d0)/[(1 + e^{-x})
+ * * (1 + d0 e^{-x}/(1 + e^{-x})
+ * + d1/(1 + e^{-x})
+ * + d0 d1 e^{-x}/(1 + e^{-x}))].
+ * = (1 + d0)/[(1 + e^{-x})(1 + d')]
+ * = [1/(1 + e^{-x})] (1 + d0)/(1 + d')
+ *
+ * where
+ *
+ * d' = d0 e^{-x}/(1 + e^{-x})
+ * + d1/(1 + e^{-x})
+ * + d0 d1 e^{-x}/(1 + e^{-x}).
+ *
+ * By Lemma 2 this relative error is bounded by
+ *
+ * 2|d0 - d'|
+ * = 2|d0 - d0 e^{-x}/(1 + e^{-x})
+ * - d1/(1 + e^{-x})
+ * - d0 d1 e^{-x}/(1 + e^{-x})|
+ * <= 2|d0| + 2|d0 e^{-x}/(1 + e^{-x})|
+ * + 2|d1/(1 + e^{-x})|
+ * + 2|d0 d1 e^{-x}/(1 + e^{-x})|
+ * <= 2|d0| + 2|d0| + 2|d1| + 2|d0 d1|
+ * <= 4|d0| + 2|d1| + 2|d0 d1|
+ * <= 6 eps + 2 eps^2.
+ */
+ return 1/(1 + exp(-x));
+ } else {
+ /*
+ * e^{-x} <= eps, so the relative error of 1 from 1/(1
+ * + e^{-x}) is
+ *
+ * |1/(1 + e^{-x}) - 1|/|1/(1 + e^{-x})|
+ * = |e^{-x}/(1 + e^{-x})|/|1/(1 + e^{-x})|
+ * = |e^{-x}|
+ * <= eps.
+ *
+ * This computation avoids an intermediate overflow
+ * exception, although the effect on the result is
+ * harmless.
+ *
+ * XXX Should maybe raise inexact here.
+ */
+ return 1;
+ }
+}
+
+/**
+ * Compute the logit function: log p/(1 - p). Defined on [0,1]. Maps
+ * a direct-space probability in [0,1] to a log-odds-space probability
+ * in [-\infty, +\infty]. Inverse of logistic.
+ *
+ * Ill-conditioned near 1/2 and 1; the identity logit(1 - p) =
+ * -logit(p) and the function logithalf(p0) = logit(1/2 + p0) may help
+ * to rearrange a computation for p in [1/(1 + e), 1 - 1/(1 + e)].
+ *
+ * This implementation gives relative error bounded by 10 eps.
+ */
+STATIC double
+logit(double p)
+{
+
+ /* logistic(-1) <= p <= logistic(+1) */
+ if (1/(1 + exp(1)) <= p && p <= 1/(1 + exp(-1))) {
+ /*
+ * For inputs near 1/2, we want to compute log1p(near
+ * 0) rather than log(near 1), so write this as:
+ *
+ * log(p/(1 - p)) = -log((1 - p)/p)
+ * = -log(1 + (1 - p)/p - 1)
+ * = -log(1 + (1 - p - p)/p)
+ * = -log(1 + (1 - 2p)/p).
+ *
+ * Since p = 2p/2 <= 1 <= 2*2p = 4p, the floating-point
+ * evaluation of 1 - 2p is exact; the only error arises
+ * from division and log1p. First, note that if
+ * logistic(-1) <= p <= logistic(+1), (1 - 2p)/p lies
+ * in the bounds of Lemma 4.
+ *
+ * If division has relative error d0 and log1p has
+ * relative error d1, the outcome is
+ *
+ * -(1 + d1) log(1 + (1 - 2p) (1 + d0)/p)
+ * = -(1 + d1) (1 + d') log(1 + (1 - 2p)/p)
+ * = -(1 + d1 + d' + d1 d') log(1 + (1 - 2p)/p).
+ *
+ * where |d'| < 8|d0| by Lemma 4. The relative error
+ * is then bounded by
+ *
+ * |d1 + d' + d1 d'|
+ * <= |d1| + 8|d0| + 8|d1 d0|
+ * <= 9 eps + 8 eps^2.
+ */
+ return -log1p((1 - 2*p)/p);
+ } else {
+ /*
+ * For inputs near 0, although 1 - p may be rounded to
+ * 1, it doesn't matter much because the magnitude of
+ * the result is so much larger. For inputs near 1, we
+ * can compute 1 - p exactly, although the precision on
+ * the input is limited so we won't ever get more than
+ * about 700 for the output.
+ *
+ * If - has relative error d0, / has relative error d1,
+ * and log has relative error d2, then
+ *
+ * (1 + d2) log((1 + d0) p/[(1 - p)(1 + d1)])
+ * = (1 + d2) [log(p/(1 - p)) + log((1 + d0)/(1 + d1))]
+ * = log(p/(1 - p)) + d2 log(p/(1 - p))
+ * + (1 + d2) log((1 + d0)/(1 + d1))
+ * = log(p/(1 - p))*[1 + d2 +
+ * + (1 + d2) log((1 + d0)/(1 + d1))/log(p/(1 - p))]
+ *
+ * Since 0 <= p < logistic(-1) or logistic(+1) < p <=
+ * 1, we have |log(p/(1 - p))| > 1. Hence this error
+ * is bounded by
+ *
+ * |d2 + (1 + d2) log((1 + d0)/(1 + d1))/log(p/(1 - p))|
+ * <= |d2| + |(1 + d2) log((1 + d0)/(1 + d1))
+ * / log(p/(1 - p))|
+ * <= |d2| + |(1 + d2) log((1 + d0)/(1 + d1))|
+ * <= |d2| + 4|(1 + d2) (d0 - d1)|, by Lemma 3,
+ * <= |d2| + 4|d0 - d1 + d2 d0 - d1 d0|
+ * <= |d2| + 4|d0| + 4|d1| + 4|d2 d0| + 4|d1 d0|
+ * <= 9 eps + 8 eps^2.
+ */
+ return log(p/(1 - p));
+ }
+}
+
+/**
+ * Compute the logit function, translated in input by 1/2: logithalf(p)
+ * = logit(1/2 + p). Defined on [-1/2, 1/2]. Inverse of logistichalf.
+ *
+ * Ill-conditioned near +/-1/2. If |p0| > 1/2 - 1/(1 + e), it may be
+ * better to compute 1/2 + p0 or -1/2 - p0 and to use logit instead.
+ * This implementation gives relative error bounded by 34 eps.
+ */
+STATIC double
+logithalf(double p0)
+{
+
+ if (fabs(p0) <= 0.5 - 1/(1 + exp(1))) {
+ /*
+ * logit(1/2 + p0)
+ * = log((1/2 + p0)/(1 - (1/2 + p0)))
+ * = log((1/2 + p0)/(1/2 - p0))
+ * = log(1 + (1/2 + p0)/(1/2 - p0) - 1)
+ * = log(1 + (1/2 + p0 - (1/2 - p0))/(1/2 - p0))
+ * = log(1 + (1/2 + p0 - 1/2 + p0)/(1/2 - p0))
+ * = log(1 + 2 p0/(1/2 - p0))
+ *
+ * If the error of subtraction is d0, the error of
+ * division is d1, and the error of log1p is d2, then
+ * what we compute is
+ *
+ * (1 + d2) log(1 + (1 + d1) 2 p0/[(1 + d0) (1/2 - p0)])
+ * = (1 + d2) log(1 + (1 + d') 2 p0/(1/2 - p0))
+ * = (1 + d2) (1 + d'') log(1 + 2 p0/(1/2 - p0))
+ * = (1 + d2 + d'' + d2 d'') log(1 + 2 p0/(1/2 - p0)),
+ *
+ * where |d'| < 2|d0 - d1| <= 4 eps by Lemma 2, and
+ * |d''| < 8|d'| < 32 eps by Lemma 4 since
+ *
+ * 1/e <= 1 + 2*p0/(1/2 - p0) <= e
+ *
+ * when |p0| <= 1/2 - 1/(1 + e). Hence the relative
+ * error is bounded by
+ *
+ * |d2 + d'' + d2 d''|
+ * <= |d2| + |d''| + |d2 d''|
+ * <= |d1| + 32 |d0| + 32 |d1 d0|
+ * <= 33 eps + 32 eps^2.
+ */
+ return log1p(2*p0/(0.5 - p0));
+ } else {
+ /*
+ * We have a choice of computing logit(1/2 + p0) or
+ * -logit(1 - (1/2 + p0)) = -logit(1/2 - p0). It
+ * doesn't matter which way we do this: either way,
+ * since 1/2 p0 <= 1/2 <= 2 p0, the sum and difference
+ * are computed exactly. So let's do the one that
+ * skips the final negation.
+ *
+ * The result is
+ *
+ * (1 + d1) log((1 + d0) (1/2 + p0)/[(1 + d2) (1/2 - p0)])
+ * = (1 + d1) (1 + log((1 + d0)/(1 + d2))
+ * / log((1/2 + p0)/(1/2 - p0)))
+ * * log((1/2 + p0)/(1/2 - p0))
+ * = (1 + d') log((1/2 + p0)/(1/2 - p0))
+ * = (1 + d') logit(1/2 + p0)
+ *
+ * where
+ *
+ * d' = d1 + log((1 + d0)/(1 + d2))/logit(1/2 + p0)
+ * + d1 log((1 + d0)/(1 + d2))/logit(1/2 + p0).
+ *
+ * For |p| > 1/2 - 1/(1 + e), logit(1/2 + p0) > 1.
+ * Provided |d0|, |d2| < 1/4, by Lemma 3 we have
+ *
+ * |log((1 + d0)/(1 + d2))| <= 4|d0 - d2|.
+ *
+ * Hence the relative error is bounded by
+ *
+ * |d'| <= |d1| + 4|d0 - d2| + 4|d1| |d0 - d2|
+ * <= |d1| + 4|d0| + 4|d2| + 4|d1 d0| + 4|d1 d2|
+ * <= 9 eps + 8 eps^2.
+ */
+ return log((0.5 + p0)/(0.5 - p0));
+ }
+}
+
+/*
+ * The following random_uniform_01 is tailored for IEEE 754 binary64
+ * floating-point or smaller. It can be adapted to larger
+ * floating-point formats like i387 80-bit or IEEE 754 binary128, but
+ * it may require sampling more bits.
+ */
+CTASSERT(FLT_RADIX == 2);
+CTASSERT(-DBL_MIN_EXP <= 1021);
+CTASSERT(DBL_MANT_DIG <= 53);
+
+/**
+ * Draw a floating-point number in [0, 1] with uniform distribution.
+ *
+ * Note that the probability of returning 0 is less than 2^-1074, so
+ * callers need not check for it. However, callers that cannot handle
+ * rounding to 1 must deal with that, because it occurs with
+ * probability 2^-54, which is small but nonnegligible.
+ */
+STATIC double
+random_uniform_01(void)
+{
+ uint32_t z, x, hi, lo;
+ double s;
+
+ /*
+ * Draw an exponent, geometrically distributed, but give up if
+ * we get a run of more than 1088 zeros, which really means the
+ * system is broken.
+ */
+ z = 0;
+ while ((x = crypto_rand_u32()) == 0) {
+ if (z >= 1088)
+ /* Your bit sampler is broken. Go home. */
+ return 0;
+ z += 32;
+ }
+ z += clz32(x);
+
+ /*
+ * Pick 32-bit halves of an odd normalized significand.
+ * Picking it odd breaks ties in the subsequent rounding, which
+ * occur only with measure zero in the uniform distribution on
+ * [0, 1].
+ */
+ hi = crypto_rand_u32() | UINT32_C(0x80000000);
+ lo = crypto_rand_u32() | UINT32_C(0x00000001);
+
+ /* Round to nearest scaled significand in [2^63, 2^64]. */
+ s = hi*(double)4294967296 + lo;
+
+ /* Rescale into [1/2, 1] and apply exponent in one swell foop. */
+ return s * ldexp(1, -(64 + z));
+}
+
+/*******************************************************************/
+
+/* Functions for specific probability distributions start here: */
+
+/*
+ * Logistic(mu, sigma) distribution, supported on (-\infty,+\infty)
+ *
+ * This is the uniform distribution on [0,1] mapped into log-odds
+ * space, scaled by sigma and translated by mu.
+ *
+ * pdf(x) = e^{-(x - mu)/sigma} sigma (1 + e^{-(x - mu)/sigma})^2
+ * cdf(x) = 1/(1 + e^{-(x - mu)/sigma}) = logistic((x - mu)/sigma)
+ * sf(x) = 1 - cdf(x) = 1 - logistic((x - mu)/sigma = logistic(-(x - mu)/sigma)
+ * icdf(p) = mu + sigma log p/(1 - p) = mu + sigma logit(p)
+ * isf(p) = mu + sigma log (1 - p)/p = mu - sigma logit(p)
+ */
+
+/**
+ * Compute the CDF of the Logistic(mu, sigma) distribution: the
+ * logistic function. Well-conditioned for negative inputs and small
+ * positive inputs; ill-conditioned for large positive inputs.
+ */
+STATIC double
+cdf_logistic(double x, double mu, double sigma)
+{
+ return logistic((x - mu)/sigma);
+}
+
+/**
+ * Compute the SF of the Logistic(mu, sigma) distribution: the logistic
+ * function reflected over the y axis. Well-conditioned for positive
+ * inputs and small negative inputs; ill-conditioned for large negative
+ * inputs.
+ */
+STATIC double
+sf_logistic(double x, double mu, double sigma)
+{
+ return logistic(-(x - mu)/sigma);
+}
+
+/**
+ * Compute the inverse of the CDF of the Logistic(mu, sigma)
+ * distribution: the logit function. Well-conditioned near 0;
+ * ill-conditioned near 1/2 and 1.
+ */
+STATIC double
+icdf_logistic(double p, double mu, double sigma)
+{
+ return mu + sigma*logit(p);
+}
+
+/**
+ * Compute the inverse of the SF of the Logistic(mu, sigma)
+ * distribution: the -logit function. Well-conditioned near 0;
+ * ill-conditioned near 1/2 and 1.
+ */
+STATIC double
+isf_logistic(double p, double mu, double sigma)
+{
+ return mu - sigma*logit(p);
+}
+
+/*
+ * LogLogistic(alpha, beta) distribution, supported on (0, +\infty).
+ *
+ * This is the uniform distribution on [0,1] mapped into odds space,
+ * scaled by positive alpha and shaped by positive beta.
+ *
+ * Equivalent to computing exp of a Logistic(log alpha, 1/beta) sample.
+ * (Name arises because the pdf has LogLogistic(x; alpha, beta) =
+ * Logistic(log x; log alpha, 1/beta) and mathematicians got their
+ * covariance contravariant.)
+ *
+ * pdf(x) = (beta/alpha) (x/alpha)^{beta - 1}/(1 + (x/alpha)^beta)^2
+ * = (1/e^mu sigma) (x/e^mu)^{1/sigma - 1} /
+ * (1 + (x/e^mu)^{1/sigma})^2
+ * cdf(x) = 1/(1 + (x/alpha)^-beta) = 1/(1 + (x/e^mu)^{-1/sigma})
+ * = 1/(1 + (e^{log x}/e^mu)^{-1/sigma})
+ * = 1/(1 + (e^{log x - mu})^{-1/sigma})
+ * = 1/(1 + e^{-(log x - mu)/sigma})
+ * = logistic((log x - mu)/sigma)
+ * = logistic((log x - log alpha)/(1/beta))
+ * sf(x) = 1 - 1/(1 + (x/alpha)^-beta)
+ * = (x/alpha)^-beta/(1 + (x/alpha)^-beta)
+ * = 1/((x/alpha)^beta + 1)
+ * = 1/(1 + (x/alpha)^beta)
+ * icdf(p) = alpha (p/(1 - p))^{1/beta}
+ * = alpha e^{logit(p)/beta}
+ * = e^{mu + sigma logit(p)}
+ * isf(p) = alpha ((1 - p)/p)^{1/beta}
+ * = alpha e^{-logit(p)/beta}
+ * = e^{mu - sigma logit(p)}
+ */
+
+/**
+ * Compute the CDF of the LogLogistic(alpha, beta) distribution.
+ * Well-conditioned for all x and alpha, and the condition number
+ *
+ * -beta/[1 + (x/alpha)^{-beta}]
+ *
+ * grows linearly with beta.
+ *
+ * Loosely, the relative error of this implementation is bounded by
+ *
+ * 4 eps + 2 eps^2 + O(beta eps),
+ *
+ * so don't bother trying this for beta anywhere near as large as
+ * 1/eps, around which point it levels off at 1.
+ */
+STATIC double
+cdf_log_logistic(double x, double alpha, double beta)
+{
+ /*
+ * Let d0 be the error of x/alpha; d1, of pow; d2, of +; and
+ * d3, of the final quotient. The exponentiation gives
+ *
+ * ((1 + d0) x/alpha)^{-beta}
+ * = (x/alpha)^{-beta} (1 + d0)^{-beta}
+ * = (x/alpha)^{-beta} (1 + (1 + d0)^{-beta} - 1)
+ * = (x/alpha)^{-beta} (1 + d')
+ *
+ * where d' = (1 + d0)^{-beta} - 1. If y = (x/alpha)^{-beta},
+ * the denominator is
+ *
+ * (1 + d2) (1 + (1 + d1) (1 + d') y)
+ * = (1 + d2) (1 + y + (d1 + d' + d1 d') y)
+ * = 1 + y + (1 + d2) (d1 + d' + d1 d') y
+ * = (1 + y) (1 + (1 + d2) (d1 + d' + d1 d') y/(1 + y))
+ * = (1 + y) (1 + d''),
+ *
+ * where d'' = (1 + d2) (d1 + d' + d1 d') y/(1 + y). The
+ * final result is
+ *
+ * (1 + d3) / [(1 + d2) (1 + d'') (1 + y)]
+ * = (1 + d''') / (1 + y)
+ *
+ * for |d'''| <= 2|d3 - d''| by Lemma 2 as long as |d''| < 1/2
+ * (which may not be the case for very large beta). This
+ * relative error is therefore bounded by
+ *
+ * |d'''|
+ * <= 2|d3 - d''|
+ * <= 2|d3| + 2|(1 + d2) (d1 + d' + d1 d') y/(1 + y)|
+ * <= 2|d3| + 2|(1 + d2) (d1 + d' + d1 d')|
+ * = 2|d3| + 2|d1 + d' + d1 d' + d2 d1 + d2 d' + d2 d1 d'|
+ * <= 2|d3| + 2|d1| + 2|d'| + 2|d1 d'| + 2|d2 d1| + 2|d2 d'|
+ * + 2|d2 d1 d'|
+ * <= 4 eps + 2 eps^2 + (2 + 2 eps + 2 eps^2) |d'|.
+ *
+ * Roughly, |d'| = |(1 + d0)^{-beta} - 1| grows like beta eps,
+ * until it levels off at 1.
+ */
+ return 1/(1 + pow(x/alpha, -beta));
+}
+
+/**
+ * Compute the SF of the LogLogistic(alpha, beta) distribution.
+ * Well-conditioned for all x and alpha, and the condition number
+ *
+ * beta/[1 + (x/alpha)^beta]
+ *
+ * grows linearly with beta.
+ *
+ * Loosely, the relative error of this implementation is bounded by
+ *
+ * 4 eps + 2 eps^2 + O(beta eps)
+ *
+ * so don't bother trying this for beta anywhere near as large as
+ * 1/eps, beyond which point it grows unbounded.
+ */
+STATIC double
+sf_log_logistic(double x, double alpha, double beta)
+{
+ /*
+ * The error analysis here is essentially the same as in
+ * cdf_log_logistic, except that rather than levelling off at
+ * 1, |(1 + d0)^beta - 1| grows unbounded.
+ */
+ return 1/(1 + pow(x/alpha, beta));
+}
+
+/**
+ * Compute the inverse of the CDF of the LogLogistic(alpha, beta)
+ * distribution. Ill-conditioned for p near 1 and beta near 0 with
+ * condition number 1/[beta (1 - p)].
+ */
+STATIC double
+icdf_log_logistic(double p, double alpha, double beta)
+{
+ return alpha*pow(p/(1 - p), 1/beta);
+}
+
+/**
+ * Compute the inverse of the SF of the LogLogistic(alpha, beta)
+ * distribution. Ill-conditioned for p near 1 and for large beta, with
+ * condition number -1/[beta (1 - p)].
+ */
+STATIC double
+isf_log_logistic(double p, double alpha, double beta)
+{
+ return alpha*pow((1 - p)/p, 1/beta);
+}
+
+/*
+ * Weibull(lambda, k) distribution, supported on (0, +\infty).
+ *
+ * pdf(x) = (k/lambda) (x/lambda)^{k - 1} e^{-(x/lambda)^k}
+ * cdf(x) = 1 - e^{-(x/lambda)^k}
+ * icdf(p) = lambda * (-log (1 - p))^{1/k}
+ * sf(x) = e^{-(x/lambda)^k}
+ * isf(p) = lambda * (-log p)^{1/k}
+ */
+
+/**
+ * Compute the CDF of the Weibull(lambda, k) distribution.
+ * Well-conditioned for small x and k, and for large lambda --
+ * condition number
+ *
+ * -k (x/lambda)^k exp(-(x/lambda)^k)/[exp(-(x/lambda)^k) - 1]
+ *
+ * grows linearly with k, x^k, and lambda^{-k}.
+ */
+STATIC double
+cdf_weibull(double x, double lambda, double k)
+{
+ return -expm1(-pow(x/lambda, k));
+}
+
+/**
+ * Compute the SF of the Weibull(lambda, k) distribution.
+ * Well-conditioned for small x and k, and for large lambda --
+ * condition number
+ *
+ * -k (x/lambda)^k
+ *
+ * grows linearly with k, x^k, and lambda^{-k}.
+ */
+STATIC double
+sf_weibull(double x, double lambda, double k)
+{
+ return exp(-pow(x/lambda, k));
+}
+
+/**
+ * Compute the inverse of the CDF of the Weibull(lambda, k)
+ * distribution. Ill-conditioned for p near 1, and for k near 0;
+ * condition number is
+ *
+ * (p/(1 - p))/(k log(1 - p)).
+ */
+STATIC double
+icdf_weibull(double p, double lambda, double k)
+{
+ return lambda*pow(-log1p(-p), 1/k);
+}
+
+/**
+ * Compute the inverse of the SF of the Weibull(lambda, k)
+ * distribution. Ill-conditioned for p near 0, and for k near 0;
+ * condition number is
+ *
+ * 1/(k log(p)).
+ */
+STATIC double
+isf_weibull(double p, double lambda, double k)
+{
+ return lambda*pow(-log(p), 1/k);
+}
+
+/*
+ * GeneralizedPareto(mu, sigma, xi), supported on (mu, +\infty) for
+ * nonnegative xi, or (mu, mu - sigma/xi) for negative xi.
+ *
+ * Samples:
+ * = mu - sigma log U, if xi = 0;
+ * = mu + sigma (U^{-xi} - 1)/xi = mu + sigma*expm1(-xi log U)/xi, if xi =/= 0,
+ * where U is uniform on (0,1].
+ * = mu + sigma (e^{xi X} - 1)/xi,
+ * where X has standard exponential distribution.
+ *
+ * pdf(x) = sigma^{-1} (1 + xi (x - mu)/sigma)^{-(1 + 1/xi)}
+ * cdf(x) = 1 - (1 + xi (x - mu)/sigma)^{-1/xi}
+ * = 1 - e^{-log(1 + xi (x - mu)/sigma)/xi}
+ * --> 1 - e^{-(x - mu)/sigma} as xi --> 0
+ * sf(x) = (1 + xi (x - mu)/sigma)^{-1/xi}
+ * --> e^{-(x - mu)/sigma} as xi --> 0
+ * icdf(p) = mu + sigma*(p^{-xi} - 1)/xi
+ * = mu + sigma*expm1(-xi log p)/xi
+ * --> mu + sigma*log p as xi --> 0
+ * isf(p) = mu + sigma*((1 - p)^{xi} - 1)/xi
+ * = mu + sigma*expm1(-xi log1p(-p))/xi
+ * --> mu + sigma*log1p(-p) as xi --> 0
+ */
+
+/**
+ * Compute the CDF of the GeneralizedPareto(mu, sigma, xi)
+ * distribution. Well-conditioned everywhere. For standard
+ * distribution (mu=0, sigma=1), condition number
+ *
+ * (x/(1 + x xi)) / ((1 + x xi)^{1/xi} - 1)
+ *
+ * is bounded by 1, attained only at x = 0.
+ */
+STATIC double
+cdf_genpareto(double x, double mu, double sigma, double xi)
+{
+ double x_0 = (x - mu)/sigma;
+
+ /*
+ * log(1 + xi x_0)/xi
+ * = (-1/xi) \sum_{n=1}^\infty (-xi x_0)^n/n
+ * = (-1/xi) (-xi x_0 + \sum_{n=2}^\infty (-xi x_0)^n/n)
+ * = x_0 - (1/xi) \sum_{n=2}^\infty (-xi x_0)^n/n
+ * = x_0 - x_0 \sum_{n=2}^\infty (-xi x_0)^{n-1}/n
+ * = x_0 (1 - d),
+ *
+ * where d = \sum_{n=2}^\infty (-xi x_0)^{n-1}/n. If |xi| <
+ * eps/4|x_0|, then
+ *
+ * |d| <= \sum_{n=2}^\infty (eps/4)^{n-1}/n
+ * <= \sum_{n=2}^\infty (eps/4)^{n-1}
+ * = \sum_{n=1}^\infty (eps/4)^n
+ * = (eps/4) \sum_{n=0}^\infty (eps/4)^n
+ * = (eps/4)/(1 - eps/4)
+ * < eps/2
+ *
+ * for any 0 < eps < 2. Thus, the relative error of x_0 from
+ * log(1 + xi x_0)/xi is bounded by eps.
+ */
+ if (fabs(xi) < 1e-17/x_0)
+ return -expm1(-x_0);
+ else
+ return -expm1(-log1p(xi*x_0)/xi);
+}
+
+/**
+ * Compute the SF of the GeneralizedPareto(mu, sigma, xi) distribution.
+ * For standard distribution (mu=0, sigma=1), ill-conditioned for xi
+ * near 0; condition number
+ *
+ * -x (1 + x xi)^{(-1 - xi)/xi}/(1 + x xi)^{-1/xi}
+ * = -x (1 + x xi)^{-1/xi - 1}/(1 + x xi)^{-1/xi}
+ * = -(x/(1 + x xi)) (1 + x xi)^{-1/xi}/(1 + x xi)^{-1/xi}
+ * = -x/(1 + x xi)
+ *
+ * is bounded by 1/xi.
+ */
+STATIC double
+sf_genpareto(double x, double mu, double sigma, double xi)
+{
+ double x_0 = (x - mu)/sigma;
+
+ if (fabs(xi) < 1e-17/x_0)
+ return exp(-x_0);
+ else
+ return exp(-log1p(xi*x_0)/xi);
+}
+
+/**
+ * Compute the inverse of the CDF of the GeneralizedPareto(mu, sigma,
+ * xi) distribution. Ill-conditioned for p near 1; condition number is
+ *
+ * xi (p/(1 - p))/(1 - (1 - p)^xi)
+ */
+STATIC double
+icdf_genpareto(double p, double mu, double sigma, double xi)
+{
+ /*
+ * To compute f(xi) = (U^{-xi} - 1)/xi = (e^{-xi log U} - 1)/xi
+ * for xi near zero (note f(xi) --> -log U as xi --> 0), write
+ * the absolutely convergent Taylor expansion
+ *
+ * f(xi) = (1/xi)*(-xi log U + \sum_{n=2}^\infty (-xi log U)^n/n!
+ * = -log U + (1/xi)*\sum_{n=2}^\infty (-xi log U)^n/n!
+ * = -log U + \sum_{n=2}^\infty xi^{n-1} (-log U)^n/n!
+ * = -log U - log U \sum_{n=2}^\infty (-xi log U)^{n-1}/n!
+ * = -log U (1 + \sum_{n=2}^\infty (-xi log U)^{n-1}/n!).
+ *
+ * Let d = \sum_{n=2}^\infty (-xi log U)^{n-1}/n!. What do we
+ * lose if we discard it and use -log U as an approximation to
+ * f(xi)? If |xi| < eps/-4log U, then
+ *
+ * |d| <= \sum_{n=2}^\infty |xi log U|^{n-1}/n!
+ * <= \sum_{n=2}^\infty (eps/4)^{n-1}/n!
+ * <= \sum_{n=1}^\infty (eps/4)^n
+ * = (eps/4) \sum_{n=0}^\infty (eps/4)^n
+ * = (eps/4)/(1 - eps/4)
+ * < eps/2,
+ *
+ * for any 0 < eps < 2. Hence, as long as |xi| < eps/-2log U,
+ * f(xi) = -log U (1 + d) for |d| <= eps/2. |d| is the
+ * relative error of f(xi) from -log U; from this bound, the
+ * relative error of -log U from f(xi) is at most (eps/2)/(1 -
+ * eps/2) = eps/2 + (eps/2)^2 + (eps/2)^3 + ... < eps for 0 <
+ * eps < 1. Since -log U < 1000 for all U in (0, 1] in
+ * binary64 floating-point, we can safely cut xi off at 1e-20 <
+ * eps/4000 and attain <1ulp error from series truncation.
+ */
+ if (fabs(xi) <= 1e-20)
+ return mu - sigma*log1p(-p);
+ else
+ return mu + sigma*expm1(-xi*log1p(-p))/xi;
+}
+
+/**
+ * Compute the inverse of the SF of the GeneralizedPareto(mu, sigma,
+ * xi) distribution. Ill-conditioned for p near 1; conditon number is
+ *
+ * -xi/(1 - p^{-xi})
+ */
+STATIC double
+isf_genpareto(double p, double mu, double sigma, double xi)
+{
+ if (fabs(xi) <= 1e-20)
+ return mu - sigma*log(p);
+ else
+ return mu + sigma*expm1(-xi*log(p))/xi;
+}
+
+/*******************************************************************/
+
+/**
+ * Deterministic samplers, parametrized by uniform integer and (0,1]
+ * samples. No guarantees are made about _which_ mapping from the
+ * integer and (0,1] samples these use; all that is guaranteed is the
+ * distribution of the outputs conditioned on a uniform distribution on
+ * the inputs. The automatic tests in test_prob_distr.c double-check
+ * the particular mappings we use.
+ *
+ * Beware: Unlike random_uniform_01(), these are not guaranteed to be
+ * supported on all possible outputs. See Ilya Mironov, `On the
+ * Significance of the Least Significant Bits for Differential
+ * Privacy', for an example of what can go wrong if you try to use
+ * these to conceal information from an adversary but you expose the
+ * specific full-precision floating-point values.
+ *
+ * Note: None of these samplers use rejection sampling; they are all
+ * essentially inverse-CDF transforms with tweaks. If you were to add,
+ * say, a Gamma sampler with the Marsaglia-Tsang method, you would have
+ * to parametrize it by a potentially infinite stream of uniform (and
+ * perhaps normal) samples rather than a fixed number, which doesn't
+ * make for quite as nice automatic testing as for these.
+ */
+
+/**
+ * Deterministically sample from the interval [a, b], indexed by a
+ * uniform random floating-point number p0 in (0, 1].
+ *
+ * Note that even if p0 is nonzero, the result may be equal to a, if
+ * ulp(a)/2 is nonnegligible, e.g. if a = 1. For maximum resolution,
+ * arrange |a| <= |b|.
+ */
+STATIC double
+sample_uniform_interval(double p0, double a, double b)
+{
+ /*
+ * XXX Prove that the distribution is, in fact, uniform on
+ * [a,b], particularly around p0 = 1, or at least has very
+ * small deviation from uniform, quantified appropriately
+ * (e.g., like in Monahan 1984, or by KL divergence). It
+ * almost certainly does but it would be nice to quantify the
+ * error.
+ */
+ if ((a <= 0 && 0 <= b) || (b <= 0 && 0 <= a)) {
+ /*
+ * When ab < 0, (1 - t) a + t b is monotonic, since for
+ * a <= b it is a sum of nondecreasing functions of t,
+ * and for b <= a, of nonincreasing functions of t.
+ * Further, clearly at 0 and 1 it attains a and b,
+ * respectively. Hence it is bounded within [a, b].
+ */
+ return (1 - p0)*a + p0*b;
+ } else {
+ /*
+ * a + (b - a) t is monotonic -- it is obviously a
+ * nondecreasing function of t for a <= b. Further, it
+ * attains a at 0, and while it may overshoot b at 1,
+ * we have a
+ *
+ * Theorem. If 0 <= t < 1, then the floating-point
+ * evaluation of a + (b - a) t is bounded in [a, b].
+ *
+ * Lemma 1. If 0 <= t < 1 is a floating-point number,
+ * then for any normal floating-point number x except
+ * the smallest in magnitude, |round(x*t)| < |x|.
+ *
+ * Proof. WLOG, assume x >= 0. Since the rounding
+ * function and t |---> x*t are nondecreasing, their
+ * composition t |---> round(x*t) is also
+ * nondecreasing, so it suffices to consider the
+ * largest floating-point number below 1, in particular
+ * t = 1 - ulp(1)/2.
+ *
+ * Case I: If x is a power of two, then the next
+ * floating-point number below x is x - ulp(x)/2 = x -
+ * x*ulp(1)/2 = x*(1 - ulp(1)/2) = x*t, so, since x*t
+ * is a floating-point number, multiplication is exact,
+ * and thus round(x*t) = x*t < x.
+ *
+ * Case II: If x is not a power of two, then the
+ * greatest lower bound of real numbers rounded to x is
+ * x - ulp(x)/2 = x - ulp(T(x))/2 = x - T(x)*ulp(1)/2,
+ * where T(X) is the largest power of two below x.
+ * Anything below this bound is rounded to a
+ * floating-point number smaller than x, and x*t = x*(1
+ * - ulp(1)/2) = x - x*ulp(1)/2 < x - T(x)*ulp(1)/2
+ * since T(x) < x, so round(x*t) < x*t < x. QED.
+ *
+ * Lemma 2. If x and y are subnormal, then round(x +
+ * y) = x + y.
+ *
+ * Proof. It is a matter of adding the significands,
+ * since if we treat subnormals as having an implicit
+ * zero bit before the `binary' point, their exponents
+ * are all the same. There is at most one carry/borrow
+ * bit, which can always be acommodated either in a
+ * subnormal, or, at largest, in the implicit one bit
+ * of a normal.
+ *
+ * Lemma 3. Let x and y be floating-point numbers. If
+ * round(x - y) is subnormal or zero, then it is equal
+ * to x - y.
+ *
+ * Proof. Case I (equal): round(x - y) = 0 iff x = y;
+ * hence if round(x - y) = 0, then round(x - y) = 0 = x
+ * - y.
+ *
+ * Case II (subnormal/subnormal): If x and y are both
+ * subnormal, this follows directly from Lemma 2.
+ *
+ * Case IIIa (normal/subnormal): If x is normal and y
+ * is subnormal, then x and y must share sign, or else
+ * x - y would be larger than x and thus rounded to
+ * normal. If s is the smallest normal positive
+ * floating-point number, |x| < 2s since by
+ * construction 2s - |y| is normal for all subnormal y.
+ * This means that x and y must have the same exponent,
+ * so the difference is the difference of significands,
+ * which is exact.
+ *
+ * Case IIIb (subnormal/normal): Same as case IIIa for
+ * -(y - x).
+ *
+ * Case IV (normal/normal): If x and y are both normal,
+ * then they must share sign, or else x - y would be
+ * larger than x and thus rounded to normal. Note that
+ * |y| < 2|x|, for if |y| >= 2|x|, then |x| - |y| <=
+ * -|x| but -|x| is normal like x. Also, |x|/2 < |y|:
+ * if |x|/2 is subnormal, it must hold because y is
+ * normal; if |x|/2 is normal, then |x|/2 >= s, so
+ * since |x| - |y| < s,
+ *
+ * |x|/2 = |x| - |x|/2 <= |x| - s <= |y|;
+ *
+ * that is, |x|/2 < |y| < 2|x|, so by the Sterbenz
+ * lemma, round(x - y) = x - y. QED.
+ *
+ * Proof of theorem. WLOG, assume 0 <= a <= b. Since
+ * round(a + round(round(b - a)*t) is nondecreasing in
+ * t and attains a at 0, the lower end of the bound is
+ * trivial; we must show the upper end of the bound
+ * strictly. It suffices to show this for the largest
+ * floating-point number below 1, namely 1 - ulp(1)/2.
+ *
+ * Case I: round(b - a) is normal. Then it is at most
+ * the smallest floating-point number above b - a. By
+ * Lemma 1, round(round(b - a)*t) < round(b - a).
+ * Since the inequality is strict, and since
+ * round(round(b - a)*t) is a floating-point number
+ * below round(b - a), and since there are no
+ * floating-point numbers between b - a and round(b -
+ * a), we must have round(round(b - a)*t) < b - a.
+ * Then since y |---> round(a + y) is nondecreasing, we
+ * must have
+ *
+ * round(a + round(round(b - a)*t))
+ * <= round(a + (b - a))
+ * = round(b) = b.
+ *
+ * Case II: round(b - a) is subnormal. In this case,
+ * Lemma 1 falls apart -- we are not guaranteed the
+ * strict inequality. However, by Lemma 3, the
+ * difference is exact: round(b - a) = b - a. Thus,
+ *
+ * round(a + round(round(b - a)*t))
+ * <= round(a + round((b - a)*t))
+ * <= round(a + (b - a))
+ * = round(b)
+ * = b,
+ *
+ * QED.
+ */
+
+ /* p0 is restricted to [0,1], but we use >= to silence -Wfloat-equal. */
+ if (p0 >= 1)
+ return b;
+ return a + (b - a)*p0;
+ }
+}
+
+/**
+ * Deterministically sample from the standard logistic distribution,
+ * indexed by a uniform random 32-bit integer s and uniform random
+ * floating-point numbers t and p0 in (0, 1].
+ */
+STATIC double
+sample_logistic(uint32_t s, double t, double p0)
+{
+ double sign = (s & 1) ? -1 : +1;
+ double r;
+
+ /*
+ * We carve up the interval (0, 1) into subregions to compute
+ * the inverse CDF precisely:
+ *
+ * A = (0, 1/(1 + e)] ---> (-\infty, -1]
+ * B = [1/(1 + e), 1/2] ---> [-1, 0]
+ * C = [1/2, 1 - 1/(1 + e)] ---> [0, 1]
+ * D = [1 - 1/(1 + e), 1) ---> [1, +\infty)
+ *
+ * Cases D and C are mirror images of cases A and B,
+ * respectively, so we choose between them by the sign chosen
+ * by a fair coin toss. We choose between cases A and B by a
+ * coin toss weighted by
+ *
+ * 2/(1 + e) = 1 - [1/2 - 1/(1 + e)]/(1/2):
+ *
+ * if it comes up heads, scale p0 into a uniform (0, 1/(1 + e)]
+ * sample p; if it comes up tails, scale p0 into a uniform (0,
+ * 1/2 - 1/(1 + e)] sample and compute the inverse CDF of p =
+ * 1/2 - p0.
+ */
+ if (t <= 2/(1 + exp(1))) {
+ /* p uniform in (0, 1/(1 + e)], represented by p. */
+ p0 /= 1 + exp(1);
+ r = logit(p0);
+ } else {
+ /*
+ * p uniform in [1/(1 + e), 1/2), actually represented
+ * by p0 = 1/2 - p uniform in (0, 1/2 - 1/(1 + e)], so
+ * that p = 1/2 - p.
+ */
+ p0 *= 0.5 - 1/(1 + exp(1));
+ r = logithalf(p0);
+ }
+
+ /*
+ * We have chosen from the negative half of the standard
+ * logistic distribution, which is symmetric with the positive
+ * half. Now use the sign to choose uniformly between them.
+ */
+ return sign*r;
+}
+
+/**
+ * Deterministically sample from the logistic distribution scaled by
+ * sigma and translated by mu.
+ */
+static double
+sample_logistic_locscale(uint32_t s, double t, double p0, double mu,
+ double sigma)
+{
+
+ return mu + sigma*sample_logistic(s, t, p0);
+}
+
+/**
+ * Deterministically sample from the standard log-logistic
+ * distribution, indexed by a uniform random 32-bit integer s and a
+ * uniform random floating-point number p0 in (0, 1].
+ */
+STATIC double
+sample_log_logistic(uint32_t s, double p0)
+{
+
+ /*
+ * Carve up the interval (0, 1) into (0, 1/2] and [1/2, 1); the
+ * condition numbers of the icdf and the isf coincide at 1/2.
+ */
+ p0 *= 0.5;
+ if ((s & 1) == 0) {
+ /* p = p0 in (0, 1/2] */
+ return p0/(1 - p0);
+ } else {
+ /* p = 1 - p0 in [1/2, 1) */
+ return (1 - p0)/p0;
+ }
+}
+
+/**
+ * Deterministically sample from the log-logistic distribution with
+ * scale alpha and shape beta.
+ */
+static double
+sample_log_logistic_scaleshape(uint32_t s, double p0, double alpha,
+ double beta)
+{
+ double x = sample_log_logistic(s, p0);
+
+ return alpha*pow(x, 1/beta);
+}
+
+/**
+ * Deterministically sample from the standard exponential distribution,
+ * indexed by a uniform random 32-bit integer s and a uniform random
+ * floating-point number p0 in (0, 1].
+ */
+static double
+sample_exponential(uint32_t s, double p0)
+{
+ /*
+ * We would like to evaluate log(p) for p near 0, and log1p(-p)
+ * for p near 1. Simply carve the interval into (0, 1/2] and
+ * [1/2, 1) by a fair coin toss.
+ */
+ p0 *= 0.5;
+ if ((s & 1) == 0)
+ /* p = p0 in (0, 1/2] */
+ return -log(p0);
+ else
+ /* p = 1 - p0 in [1/2, 1) */
+ return -log1p(-p0);
+}
+
+/**
+ * Deterministically sample from a Weibull distribution with scale
+ * lambda and shape k -- just an exponential with a shape parameter in
+ * addition to a scale parameter. (Yes, lambda really is the scale,
+ * _not_ the rate.)
+ */
+STATIC double
+sample_weibull(uint32_t s, double p0, double lambda, double k)
+{
+
+ return lambda*pow(sample_exponential(s, p0), 1/k);
+}
+
+/**
+ * Deterministically sample from the generalized Pareto distribution
+ * with shape xi, indexed by a uniform random 32-bit integer s and a
+ * uniform random floating-point number p0 in (0, 1].
+ */
+STATIC double
+sample_genpareto(uint32_t s, double p0, double xi)
+{
+ double x = sample_exponential(s, p0);
+
+ /*
+ * Write f(xi) = (e^{xi x} - 1)/xi for xi near zero as the
+ * absolutely convergent Taylor series
+ *
+ * f(x) = (1/xi) (xi x + \sum_{n=2}^\infty (xi x)^n/n!)
+ * = x + (1/xi) \sum_{n=2}^\inty (xi x)^n/n!
+ * = x + \sum_{n=2}^\infty xi^{n-1} x^n/n!
+ * = x + x \sum_{n=2}^\infty (xi x)^{n-1}/n!
+ * = x (1 + \sum_{n=2}^\infty (xi x)^{n-1}/n!).
+ *
+ * d = \sum_{n=2}^\infty (xi x)^{n-1}/n! is the relative error
+ * of f(x) from x. If |xi| < eps/4x, then
+ *
+ * |d| <= \sum_{n=2}^\infty |xi x|^{n-1}/n!
+ * <= \sum_{n=2}^\infty (eps/4)^{n-1}/n!
+ * <= \sum_{n=1}^\infty (eps/4)
+ * = (eps/4) \sum_{n=0}^\infty (eps/4)^n
+ * = (eps/4)/(1 - eps/4)
+ * < eps/2,
+ *
+ * for any 0 < eps < 2. Hence, as long as |xi| < eps/2x, f(xi)
+ * = x (1 + d) for |d| <= eps/2, so x = f(xi) (1 + d') for |d'|
+ * <= eps. What bound should we use for x?
+ *
+ * - If x is exponentially distributed, x > 200 with
+ * probability below e^{-200} << 2^{-256}, i.e. never.
+ *
+ * - If x is computed by -log(U) for U in (0, 1], x is
+ * guaranteed to be below 1000 in IEEE 754 binary64
+ * floating-point.
+ *
+ * We can safely cut xi off at 1e-20 < eps/4000 and attain an
+ * error bounded by 0.5 ulp for this expression.
+ */
+ return (fabs(xi) < 1e-20 ? x : expm1(xi*x)/xi);
+}
+
+/**
+ * Deterministically sample from a generalized Pareto distribution with
+ * shape xi, scaled by sigma and translated by mu.
+ */
+static double
+sample_genpareto_locscale(uint32_t s, double p0, double mu, double sigma,
+ double xi)
+{
+
+ return mu + sigma*sample_genpareto(s, p0, xi);
+}
+
+/**
+ * Deterministically sample from the geometric distribution with
+ * per-trial success probability p.
+ *
+ * XXX Quantify the error (KL divergence?) of this
+ * ceiling-of-exponential sampler from a true geometric distribution,
+ * which we could get by rejection sampling. Relevant papers:
+ *
+ * John F. Monahan, `Accuracy in Random Number Generation',
+ * Mathematics of Computation 45(172), October 1984, pp. 559--568.
+*https://pdfs.semanticscholar.org/aca6/74b96da1df77b2224e8cfc5dd6d61a471632.pdf
+ *
+ * Karl Bringmann and Tobias Friedrich, `Exact and Efficient
+ * Generation of Geometric Random Variates and Random Graphs', in
+ * Proceedings of the 40th International Colloaquium on Automata,
+ * Languages, and Programming -- ICALP 2013, Springer LNCS 7965,
+ * pp.267--278.
+ * https://doi.org/10.1007/978-3-642-39206-1_23
+ * https://people.mpi-inf.mpg.de/~kbringma/paper/2013ICALP-1.pdf
+ */
+static double
+sample_geometric(uint32_t s, double p0, double p)
+{
+ double x = sample_exponential(s, p0);
+
+ /* This is actually a check against 1, but we do >= so that the compiler
+ does not raise a -Wfloat-equal */
+ if (p >= 1)
+ return 1;
+
+ return ceil(-x/log1p(-p));
+}
+
+/*******************************************************************/
+
+/** Public API for probability distributions:
+ *
+ * For each probability distribution we define each public functions
+ * (sample/cdf/sf/icdf/isf) as part of its dist_ops structure.
+ */
+
+const char *
+dist_name(const struct dist *dist)
+{
+ return dist->ops->name;
+}
+
+double
+dist_sample(const struct dist *dist)
+{
+ return dist->ops->sample(dist);
+}
+
+double
+dist_cdf(const struct dist *dist, double x)
+{
+ return dist->ops->cdf(dist, x);
+}
+
+double
+dist_sf(const struct dist *dist, double x)
+{
+ return dist->ops->sf(dist, x);
+}
+
+double
+dist_icdf(const struct dist *dist, double p)
+{
+ return dist->ops->icdf(dist, p);
+}
+
+double
+dist_isf(const struct dist *dist, double p)
+{
+ return dist->ops->isf(dist, p);
+}
+
+/** Functions for uniform distribution */
+
+static double
+uniform_sample(const struct dist *dist)
+{
+ const struct uniform *U = const_container_of(dist, struct uniform,
+ base);
+ double p0 = random_uniform_01();
+
+ return sample_uniform_interval(p0, U->a, U->b);
+}
+
+static double
+uniform_cdf(const struct dist *dist, double x)
+{
+ const struct uniform *U = const_container_of(dist, struct uniform,
+ base);
+
+ if (x < U->a)
+ return 0;
+ else if (x < U->b)
+ return (x - U->a)/(U->b - U->a);
+ else
+ return 1;
+}
+
+static double
+uniform_sf(const struct dist *dist, double x)
+{
+ const struct uniform *U = const_container_of(dist, struct uniform,
+ base);
+
+ if (x > U->b)
+ return 0;
+ else if (x > U->a)
+ return (U->b - x)/(U->b - U->a);
+ else
+ return 1;
+}
+
+static double
+uniform_icdf(const struct dist *dist, double p)
+{
+ const struct uniform *U = const_container_of(dist, struct uniform,
+ base);
+ double w = U->b - U->a;
+
+ return (p < 0.5 ? (U->a + w*p) : (U->b - w*(1 - p)));
+}
+
+static double
+uniform_isf(const struct dist *dist, double p)
+{
+ const struct uniform *U = const_container_of(dist, struct uniform,
+ base);
+ double w = U->b - U->a;
+
+ return (p < 0.5 ? (U->b - w*p) : (U->a + w*(1 - p)));
+}
+
+const struct dist_ops uniform_ops = {
+ .name = "uniform",
+ .sample = uniform_sample,
+ .cdf = uniform_cdf,
+ .sf = uniform_sf,
+ .icdf = uniform_icdf,
+ .isf = uniform_isf,
+};
+
+/** Functions for logistic distribution: */
+
+static double
+logistic_sample(const struct dist *dist)
+{
+ const struct logistic *L = const_container_of(dist, struct logistic,
+ base);
+ uint32_t s = crypto_rand_u32();
+ double t = random_uniform_01();
+ double p0 = random_uniform_01();
+
+ return sample_logistic_locscale(s, t, p0, L->mu, L->sigma);
+}
+
+static double
+logistic_cdf(const struct dist *dist, double x)
+{
+ const struct logistic *L = const_container_of(dist, struct logistic,
+ base);
+
+ return cdf_logistic(x, L->mu, L->sigma);
+}
+
+static double
+logistic_sf(const struct dist *dist, double x)
+{
+ const struct logistic *L = const_container_of(dist, struct logistic,
+ base);
+
+ return sf_logistic(x, L->mu, L->sigma);
+}
+
+static double
+logistic_icdf(const struct dist *dist, double p)
+{
+ const struct logistic *L = const_container_of(dist, struct logistic,
+ base);
+
+ return icdf_logistic(p, L->mu, L->sigma);
+}
+
+static double
+logistic_isf(const struct dist *dist, double p)
+{
+ const struct logistic *L = const_container_of(dist, struct logistic,
+ base);
+
+ return isf_logistic(p, L->mu, L->sigma);
+}
+
+const struct dist_ops logistic_ops = {
+ .name = "logistic",
+ .sample = logistic_sample,
+ .cdf = logistic_cdf,
+ .sf = logistic_sf,
+ .icdf = logistic_icdf,
+ .isf = logistic_isf,
+};
+
+/** Functions for log-logistic distribution: */
+
+static double
+log_logistic_sample(const struct dist *dist)
+{
+ const struct log_logistic *LL = const_container_of(dist, struct
+ log_logistic, base);
+ uint32_t s = crypto_rand_u32();
+ double p0 = random_uniform_01();
+
+ return sample_log_logistic_scaleshape(s, p0, LL->alpha, LL->beta);
+}
+
+static double
+log_logistic_cdf(const struct dist *dist, double x)
+{
+ const struct log_logistic *LL = const_container_of(dist,
+ struct log_logistic, base);
+
+ return cdf_log_logistic(x, LL->alpha, LL->beta);
+}
+
+static double
+log_logistic_sf(const struct dist *dist, double x)
+{
+ const struct log_logistic *LL = const_container_of(dist,
+ struct log_logistic, base);
+
+ return sf_log_logistic(x, LL->alpha, LL->beta);
+}
+
+static double
+log_logistic_icdf(const struct dist *dist, double p)
+{
+ const struct log_logistic *LL = const_container_of(dist,
+ struct log_logistic, base);
+
+ return icdf_log_logistic(p, LL->alpha, LL->beta);
+}
+
+static double
+log_logistic_isf(const struct dist *dist, double p)
+{
+ const struct log_logistic *LL = const_container_of(dist,
+ struct log_logistic, base);
+
+ return isf_log_logistic(p, LL->alpha, LL->beta);
+}
+
+const struct dist_ops log_logistic_ops = {
+ .name = "log logistic",
+ .sample = log_logistic_sample,
+ .cdf = log_logistic_cdf,
+ .sf = log_logistic_sf,
+ .icdf = log_logistic_icdf,
+ .isf = log_logistic_isf,
+};
+
+/** Functions for Weibull distribution */
+
+static double
+weibull_sample(const struct dist *dist)
+{
+ const struct weibull *W = const_container_of(dist, struct weibull,
+ base);
+ uint32_t s = crypto_rand_u32();
+ double p0 = random_uniform_01();
+
+ return sample_weibull(s, p0, W->lambda, W->k);
+}
+
+static double
+weibull_cdf(const struct dist *dist, double x)
+{
+ const struct weibull *W = const_container_of(dist, struct weibull,
+ base);
+
+ return cdf_weibull(x, W->lambda, W->k);
+}
+
+static double
+weibull_sf(const struct dist *dist, double x)
+{
+ const struct weibull *W = const_container_of(dist, struct weibull,
+ base);
+
+ return sf_weibull(x, W->lambda, W->k);
+}
+
+static double
+weibull_icdf(const struct dist *dist, double p)
+{
+ const struct weibull *W = const_container_of(dist, struct weibull,
+ base);
+
+ return icdf_weibull(p, W->lambda, W->k);
+}
+
+static double
+weibull_isf(const struct dist *dist, double p)
+{
+ const struct weibull *W = const_container_of(dist, struct weibull,
+ base);
+
+ return isf_weibull(p, W->lambda, W->k);
+}
+
+const struct dist_ops weibull_ops = {
+ .name = "Weibull",
+ .sample = weibull_sample,
+ .cdf = weibull_cdf,
+ .sf = weibull_sf,
+ .icdf = weibull_icdf,
+ .isf = weibull_isf,
+};
+
+/** Functions for generalized Pareto distributions */
+
+static double
+genpareto_sample(const struct dist *dist)
+{
+ const struct genpareto *GP = const_container_of(dist, struct genpareto,
+ base);
+ uint32_t s = crypto_rand_u32();
+ double p0 = random_uniform_01();
+
+ return sample_genpareto_locscale(s, p0, GP->mu, GP->sigma, GP->xi);
+}
+
+static double
+genpareto_cdf(const struct dist *dist, double x)
+{
+ const struct genpareto *GP = const_container_of(dist, struct genpareto,
+ base);
+
+ return cdf_genpareto(x, GP->mu, GP->sigma, GP->xi);
+}
+
+static double
+genpareto_sf(const struct dist *dist, double x)
+{
+ const struct genpareto *GP = const_container_of(dist, struct genpareto,
+ base);
+
+ return sf_genpareto(x, GP->mu, GP->sigma, GP->xi);
+}
+
+static double
+genpareto_icdf(const struct dist *dist, double p)
+{
+ const struct genpareto *GP = const_container_of(dist, struct genpareto,
+ base);
+
+ return icdf_genpareto(p, GP->mu, GP->sigma, GP->xi);
+}
+
+static double
+genpareto_isf(const struct dist *dist, double p)
+{
+ const struct genpareto *GP = const_container_of(dist, struct genpareto,
+ base);
+
+ return isf_genpareto(p, GP->mu, GP->sigma, GP->xi);
+}
+
+const struct dist_ops genpareto_ops = {
+ .name = "generalized Pareto",
+ .sample = genpareto_sample,
+ .cdf = genpareto_cdf,
+ .sf = genpareto_sf,
+ .icdf = genpareto_icdf,
+ .isf = genpareto_isf,
+};
+
+/** Functions for geometric distribution on number of trials before success */
+
+static double
+geometric_sample(const struct dist *dist)
+{
+ const struct geometric *G = const_container_of(dist, struct geometric, base);
+ uint32_t s = crypto_rand_u32();
+ double p0 = random_uniform_01();
+
+ return sample_geometric(s, p0, G->p);
+}
+
+static double
+geometric_cdf(const struct dist *dist, double x)
+{
+ const struct geometric *G = const_container_of(dist, struct geometric, base);
+
+ if (x < 1)
+ return 0;
+ /* 1 - (1 - p)^floor(x) = 1 - e^{floor(x) log(1 - p)} */
+ return -expm1(floor(x)*log1p(-G->p));
+}
+
+static double
+geometric_sf(const struct dist *dist, double x)
+{
+ const struct geometric *G = const_container_of(dist, struct geometric, base);
+
+ if (x < 1)
+ return 0;
+ /* (1 - p)^floor(x) = e^{ceil(x) log(1 - p)} */
+ return exp(floor(x)*log1p(-G->p));
+}
+
+static double
+geometric_icdf(const struct dist *dist, double p)
+{
+ const struct geometric *G = const_container_of(dist, struct geometric, base);
+
+ return log1p(-p)/log1p(-G->p);
+}
+
+static double
+geometric_isf(const struct dist *dist, double p)
+{
+ const struct geometric *G = const_container_of(dist, struct geometric, base);
+
+ return log(p)/log1p(-G->p);
+}
+
+const struct dist_ops geometric_ops = {
+ .name = "geometric (1-based)",
+ .sample = geometric_sample,
+ .cdf = geometric_cdf,
+ .sf = geometric_sf,
+ .icdf = geometric_icdf,
+ .isf = geometric_isf,
+};
diff --git a/src/lib/math/prob_distr.h b/src/lib/math/prob_distr.h
new file mode 100644
index 0000000000..66acb796fd
--- /dev/null
+++ b/src/lib/math/prob_distr.h
@@ -0,0 +1,158 @@
+
+/**
+ * \file prob_distr.h
+ *
+ * \brief Header for prob_distr.c
+ **/
+
+#ifndef TOR_PROB_DISTR_H
+#define TOR_PROB_DISTR_H
+
+#include "lib/cc/compat_compiler.h"
+#include "lib/cc/torint.h"
+#include "lib/testsupport/testsupport.h"
+
+/**
+ * Container for distribution parameters for sampling, CDF, &c.
+ */
+struct dist {
+ const struct dist_ops *ops;
+};
+
+#define DIST_BASE(OPS) { .ops = (OPS) }
+#define DIST_BASE_TYPED(OPS, OBJ, TYPE) \
+ DIST_BASE((OPS) + 0*sizeof(&(OBJ) - (const TYPE *)&(OBJ)))
+
+const char *dist_name(const struct dist *);
+double dist_sample(const struct dist *);
+double dist_cdf(const struct dist *, double x);
+double dist_sf(const struct dist *, double x);
+double dist_icdf(const struct dist *, double p);
+double dist_isf(const struct dist *, double p);
+
+struct dist_ops {
+ const char *name;
+ double (*sample)(const struct dist *);
+ double (*cdf)(const struct dist *, double x);
+ double (*sf)(const struct dist *, double x);
+ double (*icdf)(const struct dist *, double p);
+ double (*isf)(const struct dist *, double p);
+};
+
+/* Geometric distribution on positive number of trials before first success */
+
+struct geometric {
+ struct dist base;
+ double p; /* success probability */
+};
+
+extern const struct dist_ops geometric_ops;
+
+#define GEOMETRIC(OBJ) \
+ DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric)
+
+/* Pareto distribution */
+
+struct genpareto {
+ struct dist base;
+ double mu;
+ double sigma;
+ double xi;
+};
+
+extern const struct dist_ops genpareto_ops;
+
+#define GENPARETO(OBJ) \
+ DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto)
+
+/* Weibull distribution */
+
+struct weibull {
+ struct dist base;
+ double lambda;
+ double k;
+};
+
+extern const struct dist_ops weibull_ops;
+
+#define WEIBULL(OBJ) \
+ DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull)
+
+/* Log-logistic distribution */
+
+struct log_logistic {
+ struct dist base;
+ double alpha;
+ double beta;
+};
+
+extern const struct dist_ops log_logistic_ops;
+
+#define LOG_LOGISTIC(OBJ) \
+ DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic)
+
+/* Logistic distribution */
+
+struct logistic {
+ struct dist base;
+ double mu;
+ double sigma;
+};
+
+extern const struct dist_ops logistic_ops;
+
+#define LOGISTIC(OBJ) \
+ DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic)
+
+/* Uniform distribution */
+
+struct uniform {
+ struct dist base;
+ double a;
+ double b;
+};
+
+extern const struct dist_ops uniform_ops;
+
+#define UNIFORM(OBJ) \
+ DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform)
+
+/** Only by unittests */
+
+#ifdef PROB_DISTR_PRIVATE
+
+STATIC double logithalf(double p0);
+STATIC double logit(double p);
+
+STATIC double random_uniform_01(void);
+
+STATIC double logistic(double x);
+STATIC double cdf_logistic(double x, double mu, double sigma);
+STATIC double sf_logistic(double x, double mu, double sigma);
+STATIC double icdf_logistic(double p, double mu, double sigma);
+STATIC double isf_logistic(double p, double mu, double sigma);
+STATIC double sample_logistic(uint32_t s, double t, double p0);
+
+STATIC double cdf_log_logistic(double x, double alpha, double beta);
+STATIC double sf_log_logistic(double x, double alpha, double beta);
+STATIC double icdf_log_logistic(double p, double alpha, double beta);
+STATIC double isf_log_logistic(double p, double alpha, double beta);
+STATIC double sample_log_logistic(uint32_t s, double p0);
+
+STATIC double cdf_weibull(double x, double lambda, double k);
+STATIC double sf_weibull(double x, double lambda, double k);
+STATIC double icdf_weibull(double p, double lambda, double k);
+STATIC double isf_weibull(double p, double lambda, double k);
+STATIC double sample_weibull(uint32_t s, double p0, double lambda, double k);
+
+STATIC double sample_uniform_interval(double p0, double a, double b);
+
+STATIC double cdf_genpareto(double x, double mu, double sigma, double xi);
+STATIC double sf_genpareto(double x, double mu, double sigma, double xi);
+STATIC double icdf_genpareto(double p, double mu, double sigma, double xi);
+STATIC double isf_genpareto(double p, double mu, double sigma, double xi);
+STATIC double sample_genpareto(uint32_t s, double p0, double xi);
+
+#endif
+
+#endif
diff --git a/src/lib/memarea/memarea.c b/src/lib/memarea/memarea.c
index 96d94c89d9..84c73b0b95 100644
--- a/src/lib/memarea/memarea.c
+++ b/src/lib/memarea/memarea.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2018, The Tor Project, Inc. */
+/* Copyright (c) 2008-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/memarea/memarea.h b/src/lib/memarea/memarea.h
index 4978b54162..9c23cf62e9 100644
--- a/src/lib/memarea/memarea.h
+++ b/src/lib/memarea/memarea.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2018, The Tor Project, Inc. */
+/* Copyright (c) 2008-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/meminfo/meminfo.c b/src/lib/meminfo/meminfo.c
index 648f54e0c5..f233188897 100644
--- a/src/lib/meminfo/meminfo.c
+++ b/src/lib/meminfo/meminfo.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -60,7 +60,7 @@ tor_log_mallinfo(int severity)
ENABLE_GCC_WARNING(aggregate-return)
#if defined(HW_PHYSMEM64)
-/* This appears to be an OpenBSD thing */
+/* OpenBSD and NetBSD define this */
#define INT64_HW_MEM HW_PHYSMEM64
#elif defined(HW_MEMSIZE)
/* OSX defines this one */
@@ -115,7 +115,7 @@ get_total_system_memory_impl(void)
return ms.ullTotalPhys;
#elif defined(HAVE_SYSCTL) && defined(INT64_HW_MEM)
- /* On many systems, HW_PYHSMEM is clipped to 32 bits; let's use a better
+ /* On many systems, HW_PHYSMEM is clipped to 32 bits; let's use a better
* variant if we know about it. */
uint64_t memsize = 0;
size_t len = sizeof(memsize);
@@ -130,7 +130,7 @@ get_total_system_memory_impl(void)
* HW_PHYSMEM. */
size_t memsize=0;
size_t len = sizeof(memsize);
- int mib[2] = {CTL_HW, HW_USERMEM};
+ int mib[2] = {CTL_HW, HW_PHYSMEM};
if (sysctl(mib,2,&memsize,&len,NULL,0))
return 0;
diff --git a/src/lib/meminfo/meminfo.h b/src/lib/meminfo/meminfo.h
index b67d235559..2d64e1ab06 100644
--- a/src/lib/meminfo/meminfo.h
+++ b/src/lib/meminfo/meminfo.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/address.c b/src/lib/net/address.c
index 240201d7b6..e1c9e1310f 100644
--- a/src/lib/net/address.c
+++ b/src/lib/net/address.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/address.h b/src/lib/net/address.h
index e857b4068b..9b826c8359 100644
--- a/src/lib/net/address.h
+++ b/src/lib/net/address.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/alertsock.c b/src/lib/net/alertsock.c
index 340f9513fb..cc59d7d893 100644
--- a/src/lib/net/alertsock.c
+++ b/src/lib/net/alertsock.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/alertsock.h b/src/lib/net/alertsock.h
index 5dfe53a2a0..c45f42be81 100644
--- a/src/lib/net/alertsock.h
+++ b/src/lib/net/alertsock.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/buffers_net.c b/src/lib/net/buffers_net.c
index a4c0aca3b5..cfe1a7dc26 100644
--- a/src/lib/net/buffers_net.c
+++ b/src/lib/net/buffers_net.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/buffers_net.h b/src/lib/net/buffers_net.h
index 8911b082a2..a3a90172a1 100644
--- a/src/lib/net/buffers_net.h
+++ b/src/lib/net/buffers_net.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/gethostname.c b/src/lib/net/gethostname.c
index 1c4431af29..e54a1ea16e 100644
--- a/src/lib/net/gethostname.c
+++ b/src/lib/net/gethostname.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/gethostname.h b/src/lib/net/gethostname.h
index 7bf0ce5920..69b0528bc0 100644
--- a/src/lib/net/gethostname.h
+++ b/src/lib/net/gethostname.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/inaddr.c b/src/lib/net/inaddr.c
index 0960d323c5..d9ae7cd562 100644
--- a/src/lib/net/inaddr.c
+++ b/src/lib/net/inaddr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/inaddr.h b/src/lib/net/inaddr.h
index 121025a126..36352b65ea 100644
--- a/src/lib/net/inaddr.h
+++ b/src/lib/net/inaddr.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/inaddr_st.h b/src/lib/net/inaddr_st.h
index a6b7796268..806f2c096a 100644
--- a/src/lib/net/inaddr_st.h
+++ b/src/lib/net/inaddr_st.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/nettypes.h b/src/lib/net/nettypes.h
index f7f2ec7d6a..6209bbe18a 100644
--- a/src/lib/net/nettypes.h
+++ b/src/lib/net/nettypes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/network_sys.c b/src/lib/net/network_sys.c
index ac49288ee6..9dfdb2b45a 100644
--- a/src/lib/net/network_sys.c
+++ b/src/lib/net/network_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/network_sys.h b/src/lib/net/network_sys.h
index 62b778bb66..43e62592ca 100644
--- a/src/lib/net/network_sys.h
+++ b/src/lib/net/network_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/resolve.c b/src/lib/net/resolve.c
index 95c1b171b5..49c263faa2 100644
--- a/src/lib/net/resolve.c
+++ b/src/lib/net/resolve.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/resolve.h b/src/lib/net/resolve.h
index 39157aaa67..0fb77f1661 100644
--- a/src/lib/net/resolve.h
+++ b/src/lib/net/resolve.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/socket.c b/src/lib/net/socket.c
index 8940e00591..f978deeab8 100644
--- a/src/lib/net/socket.c
+++ b/src/lib/net/socket.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -458,7 +458,9 @@ get_n_open_sockets(void)
* localhost is inaccessible (for example, if the networking
* stack is down). And even if it succeeds, the socket pair will not
* be able to read while localhost is down later (the socket pair may
- * even close, depending on OS-specific timeouts).
+ * even close, depending on OS-specific timeouts). The socket pair
+ * should work on IPv4-only, IPv6-only, and dual-stack systems, as long
+ * as they have the standard localhost addresses.
*
* Returns 0 on success and -errno on failure; do not rely on the value
* of errno or WSAGetLastError().
diff --git a/src/lib/net/socket.h b/src/lib/net/socket.h
index 822b9975e6..86ae336dfb 100644
--- a/src/lib/net/socket.h
+++ b/src/lib/net/socket.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/net/socketpair.c b/src/lib/net/socketpair.c
index 6a21581d87..15c706bec7 100644
--- a/src/lib/net/socketpair.c
+++ b/src/lib/net/socketpair.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
#include "lib/cc/torint.h"
#include "lib/net/socketpair.h"
@@ -105,7 +105,12 @@ sockaddr_eq(struct sockaddr *sa1, struct sockaddr *sa2)
/**
* Helper used to implement socketpair on systems that lack it, by
* making a direct connection to localhost.
- */
+ *
+ * See tor_socketpair() for details.
+ *
+ * The direct connection defaults to IPv4, but falls back to IPv6 if
+ * IPv4 is not supported.
+ **/
int
tor_ersatz_socketpair(int family, int type, int protocol, tor_socket_t fd[2])
{
diff --git a/src/lib/net/socketpair.h b/src/lib/net/socketpair.h
index 6eecc0737a..6be0803881 100644
--- a/src/lib/net/socketpair.h
+++ b/src/lib/net/socketpair.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SOCKETPAIR_H
diff --git a/src/lib/net/socks5_status.h b/src/lib/net/socks5_status.h
index 0f31132545..e55242ce66 100644
--- a/src/lib/net/socks5_status.h
+++ b/src/lib/net/socks5_status.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/osinfo/uname.c b/src/lib/osinfo/uname.c
index 7111ae31d2..2b37ff136c 100644
--- a/src/lib/osinfo/uname.c
+++ b/src/lib/osinfo/uname.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/osinfo/uname.h b/src/lib/osinfo/uname.h
index ef8cd078ee..fcce629074 100644
--- a/src/lib/osinfo/uname.h
+++ b/src/lib/osinfo/uname.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/daemon.c b/src/lib/process/daemon.c
index ab3ac73ad5..3b90bef671 100644
--- a/src/lib/process/daemon.c
+++ b/src/lib/process/daemon.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/daemon.h b/src/lib/process/daemon.h
index e33bd56701..20920e0aae 100644
--- a/src/lib/process/daemon.h
+++ b/src/lib/process/daemon.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/env.c b/src/lib/process/env.c
index dc0b63b499..0060200ba1 100644
--- a/src/lib/process/env.c
+++ b/src/lib/process/env.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/env.h b/src/lib/process/env.h
index 288b923ace..15d59351e0 100644
--- a/src/lib/process/env.h
+++ b/src/lib/process/env.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/pidfile.c b/src/lib/process/pidfile.c
index ea008168ab..1b9d1c6d25 100644
--- a/src/lib/process/pidfile.c
+++ b/src/lib/process/pidfile.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/pidfile.h b/src/lib/process/pidfile.h
index 945edee990..dfeb39e046 100644
--- a/src/lib/process/pidfile.h
+++ b/src/lib/process/pidfile.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process.c b/src/lib/process/process.c
index ae345ceeae..422942dc83 100644
--- a/src/lib/process/process.c
+++ b/src/lib/process/process.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process.h b/src/lib/process/process.h
index 956d34ab29..14069923a0 100644
--- a/src/lib/process/process.h
+++ b/src/lib/process/process.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_sys.c b/src/lib/process/process_sys.c
index d0a94f35f7..3c809a00e8 100644
--- a/src/lib/process/process_sys.c
+++ b/src/lib/process/process_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_sys.h b/src/lib/process/process_sys.h
index b299334b6b..b7a116d838 100644
--- a/src/lib/process/process_sys.h
+++ b/src/lib/process/process_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_unix.c b/src/lib/process/process_unix.c
index dd4ccbf603..790ab897e9 100644
--- a/src/lib/process/process_unix.c
+++ b/src/lib/process/process_unix.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_unix.h b/src/lib/process/process_unix.h
index 86c10d7449..a1d8f72993 100644
--- a/src/lib/process/process_unix.h
+++ b/src/lib/process/process_unix.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_win32.c b/src/lib/process/process_win32.c
index d8a895875c..21d0b23476 100644
--- a/src/lib/process/process_win32.c
+++ b/src/lib/process/process_win32.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/process_win32.h b/src/lib/process/process_win32.h
index 8ab4880fbd..d79dde157e 100644
--- a/src/lib/process/process_win32.h
+++ b/src/lib/process/process_win32.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/restrict.c b/src/lib/process/restrict.c
index bca325e5bc..534b39d101 100644
--- a/src/lib/process/restrict.c
+++ b/src/lib/process/restrict.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/restrict.h b/src/lib/process/restrict.h
index 2e78dc468c..8491c99044 100644
--- a/src/lib/process/restrict.h
+++ b/src/lib/process/restrict.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/setuid.c b/src/lib/process/setuid.c
index d038039ff4..6e8258f279 100644
--- a/src/lib/process/setuid.c
+++ b/src/lib/process/setuid.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/setuid.h b/src/lib/process/setuid.h
index 49751c97c2..7d03e1f025 100644
--- a/src/lib/process/setuid.h
+++ b/src/lib/process/setuid.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/waitpid.c b/src/lib/process/waitpid.c
index 46d30bf50e..2b38481aeb 100644
--- a/src/lib/process/waitpid.c
+++ b/src/lib/process/waitpid.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/waitpid.h b/src/lib/process/waitpid.h
index 85905da6bf..5faef468c1 100644
--- a/src/lib/process/waitpid.h
+++ b/src/lib/process/waitpid.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/winprocess_sys.c b/src/lib/process/winprocess_sys.c
index ef66f8bfb1..1266babca8 100644
--- a/src/lib/process/winprocess_sys.c
+++ b/src/lib/process/winprocess_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/process/winprocess_sys.h b/src/lib/process/winprocess_sys.h
index cb096e0c92..7ab2aa04a6 100644
--- a/src/lib/process/winprocess_sys.h
+++ b/src/lib/process/winprocess_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/sandbox/sandbox.c b/src/lib/sandbox/sandbox.c
index ea738b273e..b652397f5a 100644
--- a/src/lib/sandbox/sandbox.c
+++ b/src/lib/sandbox/sandbox.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -832,6 +832,12 @@ sb_getsockopt(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
if (rc)
return rc;
+ rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt),
+ SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET),
+ SCMP_CMP(2, SCMP_CMP_EQ, SO_ACCEPTCONN));
+ if (rc)
+ return rc;
+
#ifdef HAVE_SYSTEMD
rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt),
SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET),
diff --git a/src/lib/sandbox/sandbox.h b/src/lib/sandbox/sandbox.h
index 60d8e8816a..5bec09a36a 100644
--- a/src/lib/sandbox/sandbox.h
+++ b/src/lib/sandbox/sandbox.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/smartlist_core/smartlist_core.c b/src/lib/smartlist_core/smartlist_core.c
index 8364a8180b..ac85a6cc84 100644
--- a/src/lib/smartlist_core/smartlist_core.c
+++ b/src/lib/smartlist_core/smartlist_core.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/smartlist_core/smartlist_core.h b/src/lib/smartlist_core/smartlist_core.h
index 974fb01758..a7fbaa099b 100644
--- a/src/lib/smartlist_core/smartlist_core.h
+++ b/src/lib/smartlist_core/smartlist_core.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/smartlist_core/smartlist_foreach.h b/src/lib/smartlist_core/smartlist_foreach.h
index 54f08ac47d..a1fbcd444c 100644
--- a/src/lib/smartlist_core/smartlist_foreach.h
+++ b/src/lib/smartlist_core/smartlist_foreach.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -83,6 +83,19 @@
++var ## _sl_idx) { \
var = (sl)->list[var ## _sl_idx];
+/** Iterates over the items in smartlist <b>sl</b> in reverse order, similar to
+ * SMARTLIST_FOREACH_BEGIN
+ *
+ * NOTE: This macro is incompatible with SMARTLIST_DEL_CURRENT.
+ */
+#define SMARTLIST_FOREACH_REVERSE_BEGIN(sl, type, var) \
+ STMT_BEGIN \
+ int var ## _sl_idx, var ## _sl_len=(sl)->num_used; \
+ type var; \
+ for (var ## _sl_idx = var ## _sl_len-1; var ## _sl_idx >= 0; \
+ --var ## _sl_idx) { \
+ var = (sl)->list[var ## _sl_idx];
+
#define SMARTLIST_FOREACH_END(var) \
var = NULL; \
(void) var ## _sl_idx; \
diff --git a/src/lib/smartlist_core/smartlist_split.c b/src/lib/smartlist_core/smartlist_split.c
index f63894869c..c9cf59851f 100644
--- a/src/lib/smartlist_core/smartlist_split.c
+++ b/src/lib/smartlist_core/smartlist_split.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/smartlist_core/smartlist_split.h b/src/lib/smartlist_core/smartlist_split.h
index 4dd48295ce..4f72376125 100644
--- a/src/lib/smartlist_core/smartlist_split.h
+++ b/src/lib/smartlist_core/smartlist_split.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/compat_ctype.c b/src/lib/string/compat_ctype.c
index 35f4ec6534..f5d82be3ae 100644
--- a/src/lib/string/compat_ctype.c
+++ b/src/lib/string/compat_ctype.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/compat_ctype.h b/src/lib/string/compat_ctype.h
index 210c460c31..dbddd356c1 100644
--- a/src/lib/string/compat_ctype.h
+++ b/src/lib/string/compat_ctype.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/compat_string.c b/src/lib/string/compat_string.c
index b3f1e0fd96..187f784be5 100644
--- a/src/lib/string/compat_string.c
+++ b/src/lib/string/compat_string.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/compat_string.h b/src/lib/string/compat_string.h
index 9292717337..a0e37bb6dc 100644
--- a/src/lib/string/compat_string.h
+++ b/src/lib/string/compat_string.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/parse_int.c b/src/lib/string/parse_int.c
index 52ff49ef1e..fbdd554a47 100644
--- a/src/lib/string/parse_int.c
+++ b/src/lib/string/parse_int.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/parse_int.h b/src/lib/string/parse_int.h
index 663a5acd74..925547942e 100644
--- a/src/lib/string/parse_int.h
+++ b/src/lib/string/parse_int.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/printf.c b/src/lib/string/printf.c
index e23da69d0e..415d4ac4a7 100644
--- a/src/lib/string/printf.c
+++ b/src/lib/string/printf.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/printf.h b/src/lib/string/printf.h
index 49c37d43e0..2cc13d6bee 100644
--- a/src/lib/string/printf.h
+++ b/src/lib/string/printf.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/scanf.c b/src/lib/string/scanf.c
index 7b08442148..1bc39b5182 100644
--- a/src/lib/string/scanf.c
+++ b/src/lib/string/scanf.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/scanf.h b/src/lib/string/scanf.h
index ada2322bb1..6673173de5 100644
--- a/src/lib/string/scanf.h
+++ b/src/lib/string/scanf.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/util_string.c b/src/lib/string/util_string.c
index 36e19d029c..0c4e399008 100644
--- a/src/lib/string/util_string.c
+++ b/src/lib/string/util_string.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/string/util_string.h b/src/lib/string/util_string.h
index 6541afa4cb..da4fab159c 100644
--- a/src/lib/string/util_string.h
+++ b/src/lib/string/util_string.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/subsys/subsys.h b/src/lib/subsys/subsys.h
index 2452ec6e2f..241ad7829c 100644
--- a/src/lib/subsys/subsys.h
+++ b/src/lib/subsys/subsys.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_SUBSYS_T
diff --git a/src/lib/term/getpass.c b/src/lib/term/getpass.c
index a473fb765b..8741344acf 100644
--- a/src/lib/term/getpass.c
+++ b/src/lib/term/getpass.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/term/getpass.h b/src/lib/term/getpass.h
index e8347e7fe8..a9c146ea8f 100644
--- a/src/lib/term/getpass.h
+++ b/src/lib/term/getpass.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/testsupport/testsupport.h b/src/lib/testsupport/testsupport.h
index 3ae1b48f87..9363a9ba66 100644
--- a/src/lib/testsupport/testsupport.h
+++ b/src/lib/testsupport/testsupport.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/compat_pthreads.c b/src/lib/thread/compat_pthreads.c
index e5c8805ddc..05efe9cfd0 100644
--- a/src/lib/thread/compat_pthreads.c
+++ b/src/lib/thread/compat_pthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/compat_threads.c b/src/lib/thread/compat_threads.c
index 0b466da212..35cfeba64c 100644
--- a/src/lib/thread/compat_threads.c
+++ b/src/lib/thread/compat_threads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/compat_winthreads.c b/src/lib/thread/compat_winthreads.c
index 799eeda1b4..f0b1430e84 100644
--- a/src/lib/thread/compat_winthreads.c
+++ b/src/lib/thread/compat_winthreads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/numcpus.c b/src/lib/thread/numcpus.c
index cca15eb7aa..b293d965d2 100644
--- a/src/lib/thread/numcpus.c
+++ b/src/lib/thread/numcpus.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/numcpus.h b/src/lib/thread/numcpus.h
index 0b026e4249..3f0a29ce7c 100644
--- a/src/lib/thread/numcpus.h
+++ b/src/lib/thread/numcpus.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/thread_sys.h b/src/lib/thread/thread_sys.h
index 984abe88e8..c0daf2b5e9 100644
--- a/src/lib/thread/thread_sys.h
+++ b/src/lib/thread/thread_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/thread/threads.h b/src/lib/thread/threads.h
index 4d5191124c..ecf60641b5 100644
--- a/src/lib/thread/threads.h
+++ b/src/lib/thread/threads.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/time/.may_include b/src/lib/time/.may_include
index 40a18805ac..ae01431b60 100644
--- a/src/lib/time/.may_include
+++ b/src/lib/time/.may_include
@@ -7,6 +7,7 @@ lib/log/*.h
lib/subsys/*.h
lib/time/*.h
lib/wallclock/*.h
+lib/defs/time.h
# For load_windows_system_lib.
lib/fs/winlib.h \ No newline at end of file
diff --git a/src/lib/time/compat_time.c b/src/lib/time/compat_time.c
index f1ddb4fdc4..33e077a587 100644
--- a/src/lib/time/compat_time.c
+++ b/src/lib/time/compat_time.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -787,8 +787,8 @@ monotime_absolute_nsec(void)
return monotime_diff_nsec(&initialized_at, &now);
}
-uint64_t
-monotime_absolute_usec(void)
+MOCK_IMPL(uint64_t,
+monotime_absolute_usec,(void))
{
return monotime_absolute_nsec() / 1000;
}
diff --git a/src/lib/time/compat_time.h b/src/lib/time/compat_time.h
index c5337e9998..2cd4b3bee3 100644
--- a/src/lib/time/compat_time.h
+++ b/src/lib/time/compat_time.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -199,7 +199,7 @@ uint64_t monotime_absolute_nsec(void);
/**
* Return the number of microseconds since the timer system was initialized.
*/
-uint64_t monotime_absolute_usec(void);
+MOCK_DECL(uint64_t, monotime_absolute_usec,(void));
/**
* Return the number of milliseconds since the timer system was initialized.
*/
diff --git a/src/lib/time/time_sys.c b/src/lib/time/time_sys.c
index b29ca35e69..b3feb7b46a 100644
--- a/src/lib/time/time_sys.c
+++ b/src/lib/time/time_sys.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/time/time_sys.h b/src/lib/time/time_sys.h
index 5f5982a33b..6a860ffd08 100644
--- a/src/lib/time/time_sys.h
+++ b/src/lib/time/time_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/time/tvdiff.c b/src/lib/time/tvdiff.c
index bc8a1166e7..d7c245f57a 100644
--- a/src/lib/time/tvdiff.c
+++ b/src/lib/time/tvdiff.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,6 +11,7 @@
#include "lib/time/tvdiff.h"
#include "lib/cc/compat_compiler.h"
+#include "lib/defs/time.h"
#include "lib/log/log.h"
#ifdef _WIN32
@@ -20,8 +21,6 @@
#include <sys/time.h>
#endif
-#define TOR_USEC_PER_SEC 1000000
-
/** Return the difference between start->tv_sec and end->tv_sec.
* Returns INT64_MAX on overflow and underflow.
*/
diff --git a/src/lib/time/tvdiff.h b/src/lib/time/tvdiff.h
index a15ce52ad6..724af1528a 100644
--- a/src/lib/time/tvdiff.h
+++ b/src/lib/time/tvdiff.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/buffers_tls.c b/src/lib/tls/buffers_tls.c
index b4059292ea..3c18cc7e43 100644
--- a/src/lib/tls/buffers_tls.c
+++ b/src/lib/tls/buffers_tls.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/buffers_tls.h b/src/lib/tls/buffers_tls.h
index 7a1ca6d16c..65788c3f34 100644
--- a/src/lib/tls/buffers_tls.h
+++ b/src/lib/tls/buffers_tls.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/nss_countbytes.c b/src/lib/tls/nss_countbytes.c
index c727684529..7761727acd 100644
--- a/src/lib/tls/nss_countbytes.c
+++ b/src/lib/tls/nss_countbytes.c
@@ -1,4 +1,4 @@
-/* Copyright 2018, The Tor Project Inc. */
+/* Copyright 2018-2019, The Tor Project Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/nss_countbytes.h b/src/lib/tls/nss_countbytes.h
index f26280edf2..8b31603923 100644
--- a/src/lib/tls/nss_countbytes.h
+++ b/src/lib/tls/nss_countbytes.h
@@ -1,4 +1,4 @@
-/* Copyright 2018, The Tor Project, Inc. */
+/* Copyright 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/tortls.c b/src/lib/tls/tortls.c
index 654cacacf7..1aff40c437 100644
--- a/src/lib/tls/tortls.c
+++ b/src/lib/tls/tortls.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TORTLS_PRIVATE
diff --git a/src/lib/tls/tortls.h b/src/lib/tls/tortls.h
index 81db5ce5a9..8efc7a1c98 100644
--- a/src/lib/tls/tortls.h
+++ b/src/lib/tls/tortls.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TORTLS_H
diff --git a/src/lib/tls/tortls_internal.h b/src/lib/tls/tortls_internal.h
index 2bf2212104..071c506561 100644
--- a/src/lib/tls/tortls_internal.h
+++ b/src/lib/tls/tortls_internal.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TORTLS_INTERNAL_H
diff --git a/src/lib/tls/tortls_nss.c b/src/lib/tls/tortls_nss.c
index 462cd5b0ff..00c4af0e97 100644
--- a/src/lib/tls/tortls_nss.c
+++ b/src/lib/tls/tortls_nss.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/tortls_openssl.c b/src/lib/tls/tortls_openssl.c
index c0ad74d908..f9f7a7a179 100644
--- a/src/lib/tls/tortls_openssl.c
+++ b/src/lib/tls/tortls_openssl.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/tortls_st.h b/src/lib/tls/tortls_st.h
index 549443a4e7..3f7ea8ac6a 100644
--- a/src/lib/tls/tortls_st.h
+++ b/src/lib/tls/tortls_st.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TORTLS_ST_H
diff --git a/src/lib/tls/tortls_sys.h b/src/lib/tls/tortls_sys.h
index fd909f6019..4b04f85f0c 100644
--- a/src/lib/tls/tortls_sys.h
+++ b/src/lib/tls/tortls_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/x509.c b/src/lib/tls/x509.c
index 0d62ee41af..67a8b49b9d 100644
--- a/src/lib/tls/x509.c
+++ b/src/lib/tls/x509.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/x509.h b/src/lib/tls/x509.h
index e7440a192f..5e6660de5c 100644
--- a/src/lib/tls/x509.h
+++ b/src/lib/tls/x509.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_X509_H
diff --git a/src/lib/tls/x509_internal.h b/src/lib/tls/x509_internal.h
index 139ecedd23..bf2bec9689 100644
--- a/src/lib/tls/x509_internal.h
+++ b/src/lib/tls/x509_internal.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_X509_INTERNAL_H
diff --git a/src/lib/tls/x509_nss.c b/src/lib/tls/x509_nss.c
index a0a9c559cf..fb4af54c52 100644
--- a/src/lib/tls/x509_nss.c
+++ b/src/lib/tls/x509_nss.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/tls/x509_openssl.c b/src/lib/tls/x509_openssl.c
index dd74e84418..a344279c22 100644
--- a/src/lib/tls/x509_openssl.c
+++ b/src/lib/tls/x509_openssl.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -31,7 +31,10 @@ DISABLE_GCC_WARNING(redundant-decls)
#include <openssl/asn1.h>
#include <openssl/bio.h>
#include <openssl/bn.h>
+#include <openssl/evp.h>
+#include <openssl/objects.h>
#include <openssl/rsa.h>
+#include <openssl/x509.h>
ENABLE_GCC_WARNING(redundant-decls)
diff --git a/src/lib/trace/debug.h b/src/lib/trace/debug.h
index 191d94226d..e35616cf50 100644
--- a/src/lib/trace/debug.h
+++ b/src/lib/trace/debug.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/trace/events.h b/src/lib/trace/events.h
index 6d4269aaed..1e1e7b9d16 100644
--- a/src/lib/trace/events.h
+++ b/src/lib/trace/events.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/trace/trace.c b/src/lib/trace/trace.c
index 535ffde183..18be63c5a8 100644
--- a/src/lib/trace/trace.c
+++ b/src/lib/trace/trace.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/trace/trace.h b/src/lib/trace/trace.h
index 5f7b0ee7cd..606d435568 100644
--- a/src/lib/trace/trace.h
+++ b/src/lib/trace/trace.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/version/git_revision.c b/src/lib/version/git_revision.c
index e5b2ff534e..900a1e12a0 100644
--- a/src/lib/version/git_revision.c
+++ b/src/lib/version/git_revision.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/lib/version/git_revision.h b/src/lib/version/git_revision.h
index 0ce1190795..79e3c6684b 100644
--- a/src/lib/version/git_revision.h
+++ b/src/lib/version/git_revision.h
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_GIT_REVISION_H
diff --git a/src/lib/version/torversion.h b/src/lib/version/torversion.h
index 761d6f25ab..7b0fb66ec0 100644
--- a/src/lib/version/torversion.h
+++ b/src/lib/version/torversion.h
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_VERSION_H
diff --git a/src/lib/version/version.c b/src/lib/version/version.c
index 29ada39c9d..434e6fb424 100644
--- a/src/lib/version/version.c
+++ b/src/lib/version/version.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/lib/wallclock/approx_time.c b/src/lib/wallclock/approx_time.c
index 0b0ef382c2..7b32804026 100644
--- a/src/lib/wallclock/approx_time.c
+++ b/src/lib/wallclock/approx_time.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/approx_time.h b/src/lib/wallclock/approx_time.h
index becc632fe3..e6b53f2c27 100644
--- a/src/lib/wallclock/approx_time.h
+++ b/src/lib/wallclock/approx_time.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/time_to_tm.c b/src/lib/wallclock/time_to_tm.c
index 6543b97e37..f7cb21827b 100644
--- a/src/lib/wallclock/time_to_tm.c
+++ b/src/lib/wallclock/time_to_tm.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/time_to_tm.h b/src/lib/wallclock/time_to_tm.h
index 0527a97b34..abe78c0efe 100644
--- a/src/lib/wallclock/time_to_tm.h
+++ b/src/lib/wallclock/time_to_tm.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/timeval.h b/src/lib/wallclock/timeval.h
index b34277cda6..4967e939bf 100644
--- a/src/lib/wallclock/timeval.h
+++ b/src/lib/wallclock/timeval.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/tor_gettimeofday.c b/src/lib/wallclock/tor_gettimeofday.c
index aefe796ad2..63538f3b81 100644
--- a/src/lib/wallclock/tor_gettimeofday.c
+++ b/src/lib/wallclock/tor_gettimeofday.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/tor_gettimeofday.h b/src/lib/wallclock/tor_gettimeofday.h
index aac6366a65..c7fff9747a 100644
--- a/src/lib/wallclock/tor_gettimeofday.h
+++ b/src/lib/wallclock/tor_gettimeofday.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/lib/wallclock/wallclock_sys.h b/src/lib/wallclock/wallclock_sys.h
index e009578a83..a30912b8fb 100644
--- a/src/lib/wallclock/wallclock_sys.h
+++ b/src/lib/wallclock/wallclock_sys.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock
index 7d6a6635c5..e2f24b0af7 100644
--- a/src/rust/Cargo.lock
+++ b/src/rust/Cargo.lock
@@ -1,3 +1,5 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
[[package]]
name = "crypto"
version = "0.0.1"
diff --git a/src/rust/crypto/digests/mod.rs b/src/rust/crypto/digests/mod.rs
index a2463b89eb..58343b9ca7 100644
--- a/src/rust/crypto/digests/mod.rs
+++ b/src/rust/crypto/digests/mod.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/crypto/digests/sha2.rs b/src/rust/crypto/digests/sha2.rs
index 55d0027665..91e8b2b3c9 100644
--- a/src/rust/crypto/digests/sha2.rs
+++ b/src/rust/crypto/digests/sha2.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/crypto/lib.rs b/src/rust/crypto/lib.rs
index 4eceb4cbd1..866ea93547 100644
--- a/src/rust/crypto/lib.rs
+++ b/src/rust/crypto/lib.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/crypto/rand/mod.rs b/src/rust/crypto/rand/mod.rs
index 82d02a70bb..da8b3bd8a5 100644
--- a/src/rust/crypto/rand/mod.rs
+++ b/src/rust/crypto/rand/mod.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/crypto/rand/rng.rs b/src/rust/crypto/rand/rng.rs
index 64ceb22424..96e112799e 100644
--- a/src/rust/crypto/rand/rng.rs
+++ b/src/rust/crypto/rand/rng.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/external/crypto_digest.rs b/src/rust/external/crypto_digest.rs
index ebcf2e88a9..454f836bad 100644
--- a/src/rust/external/crypto_digest.rs
+++ b/src/rust/external/crypto_digest.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/external/crypto_rand.rs b/src/rust/external/crypto_rand.rs
index b68f98b358..703382093c 100644
--- a/src/rust/external/crypto_rand.rs
+++ b/src/rust/external/crypto_rand.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/external/external.rs b/src/rust/external/external.rs
index aa43d2a928..0d324c8820 100644
--- a/src/rust/external/external.rs
+++ b/src/rust/external/external.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
use libc::{c_char, c_int};
diff --git a/src/rust/external/lib.rs b/src/rust/external/lib.rs
index d68036fcad..2f50610a4d 100644
--- a/src/rust/external/lib.rs
+++ b/src/rust/external/lib.rs
@@ -1,4 +1,4 @@
-//! Copyright (c) 2016-2018, The Tor Project, Inc. */
+//! Copyright (c) 2016-2019, The Tor Project, Inc. */
//! See LICENSE for licensing information */
//! Interface for external calls to tor C ABI
diff --git a/src/rust/protover/errors.rs b/src/rust/protover/errors.rs
index f26a48b019..dc0d8735f4 100644
--- a/src/rust/protover/errors.rs
+++ b/src/rust/protover/errors.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs
index 5c29adf045..6ee63adb10 100644
--- a/src/rust/protover/ffi.rs
+++ b/src/rust/protover/ffi.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
//! FFI functions, only to be called from C.
diff --git a/src/rust/protover/lib.rs b/src/rust/protover/lib.rs
index 9625cb58ad..35c4106ae5 100644
--- a/src/rust/protover/lib.rs
+++ b/src/rust/protover/lib.rs
@@ -1,4 +1,4 @@
-//! Copyright (c) 2016-2018, The Tor Project, Inc. */
+//! Copyright (c) 2016-2019, The Tor Project, Inc. */
//! See LICENSE for licensing information */
//! Versioning information for different pieces of the Tor protocol.
diff --git a/src/rust/protover/protoset.rs b/src/rust/protover/protoset.rs
index aa8d243bad..3b283983c8 100644
--- a/src/rust/protover/protoset.rs
+++ b/src/rust/protover/protoset.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, The Tor Project, Inc.
+// Copyright (c) 2018-2019, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
diff --git a/src/rust/protover/protover.rs b/src/rust/protover/protover.rs
index 8624afeafa..74158d9f6d 100644
--- a/src/rust/protover/protover.rs
+++ b/src/rust/protover/protover.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
use std::collections::hash_map;
@@ -46,6 +46,7 @@ pub enum Protocol {
LinkAuth,
Microdesc,
Relay,
+ Padding,
}
impl fmt::Display for Protocol {
@@ -73,6 +74,7 @@ impl FromStr for Protocol {
"LinkAuth" => Ok(Protocol::LinkAuth),
"Microdesc" => Ok(Protocol::Microdesc),
"Relay" => Ok(Protocol::Relay),
+ "Padding" => Ok(Protocol::Padding),
_ => Err(ProtoverError::UnknownProtocol),
}
}
@@ -163,7 +165,8 @@ pub(crate) fn get_supported_protocols_cstr() -> &'static CStr {
Link=1-5 \
LinkAuth=3 \
Microdesc=1-2 \
- Relay=1-2"
+ Relay=1-2 \
+ Padding=1"
)
} else {
cstr!(
@@ -176,7 +179,8 @@ pub(crate) fn get_supported_protocols_cstr() -> &'static CStr {
Link=1-5 \
LinkAuth=1,3 \
Microdesc=1-2 \
- Relay=1-2"
+ Relay=1-2 \
+ Padding=1"
)
}
}
diff --git a/src/rust/protover/tests/protover.rs b/src/rust/protover/tests/protover.rs
index 86e276cf73..942fe3c6ab 100644
--- a/src/rust/protover/tests/protover.rs
+++ b/src/rust/protover/tests/protover.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
extern crate protover;
diff --git a/src/rust/smartlist/lib.rs b/src/rust/smartlist/lib.rs
index 34d0b907ed..23301f88c3 100644
--- a/src/rust/smartlist/lib.rs
+++ b/src/rust/smartlist/lib.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
extern crate libc;
diff --git a/src/rust/smartlist/smartlist.rs b/src/rust/smartlist/smartlist.rs
index bce58c0ef9..d8f8083dff 100644
--- a/src/rust/smartlist/smartlist.rs
+++ b/src/rust/smartlist/smartlist.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
use libc::{c_char, c_int};
diff --git a/src/rust/tor_allocate/lib.rs b/src/rust/tor_allocate/lib.rs
index 1cfa0b5178..fff8a08006 100644
--- a/src/rust/tor_allocate/lib.rs
+++ b/src/rust/tor_allocate/lib.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
//! Allocation helper functions that allow data to be allocated in Rust
diff --git a/src/rust/tor_allocate/tor_allocate.rs b/src/rust/tor_allocate/tor_allocate.rs
index 48351d8482..682a524ee7 100644
--- a/src/rust/tor_allocate/tor_allocate.rs
+++ b/src/rust/tor_allocate/tor_allocate.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
// No-op defined purely for testing at the module level
use libc::c_char;
diff --git a/src/rust/tor_log/lib.rs b/src/rust/tor_log/lib.rs
index 21855ae73b..4aa658e35b 100644
--- a/src/rust/tor_log/lib.rs
+++ b/src/rust/tor_log/lib.rs
@@ -1,4 +1,4 @@
-//! Copyright (c) 2016-2018, The Tor Project, Inc. */
+//! Copyright (c) 2016-2019, The Tor Project, Inc. */
//! See LICENSE for licensing information */
//! Logging wrapper for Rust to utilize Tor's logger, found at
diff --git a/src/rust/tor_log/tor_log.rs b/src/rust/tor_log/tor_log.rs
index 757c74ff49..98fccba5a9 100644
--- a/src/rust/tor_log/tor_log.rs
+++ b/src/rust/tor_log/tor_log.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
// Note that these functions are untested due to the fact that there are no
diff --git a/src/rust/tor_util/ffi.rs b/src/rust/tor_util/ffi.rs
index f015590178..b71b2bd093 100644
--- a/src/rust/tor_util/ffi.rs
+++ b/src/rust/tor_util/ffi.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
//! FFI functions to announce Rust support during tor startup, only to be
diff --git a/src/rust/tor_util/lib.rs b/src/rust/tor_util/lib.rs
index 4ce5fc9374..8886767ede 100644
--- a/src/rust/tor_util/lib.rs
+++ b/src/rust/tor_util/lib.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
//! Small module to announce Rust support during startup for demonstration
diff --git a/src/rust/tor_util/strings.rs b/src/rust/tor_util/strings.rs
index 71a908a58c..ede42c6ea8 100644
--- a/src/rust/tor_util/strings.rs
+++ b/src/rust/tor_util/strings.rs
@@ -1,4 +1,4 @@
-// Copyright (c) 2016-2018, The Tor Project, Inc. */
+// Copyright (c) 2016-2019, The Tor Project, Inc. */
// See LICENSE for licensing information */
//! Utilities for working with static strings.
diff --git a/src/test/Makefile.nmake b/src/test/Makefile.nmake
index aa16a22b52..ca6a84cf8a 100644
--- a/src/test/Makefile.nmake
+++ b/src/test/Makefile.nmake
@@ -19,6 +19,7 @@ TEST_OBJECTS = test.obj test_addr.obj test_channel.obj test_channeltls.obj \
test_cell_formats.obj test_relay.obj test_replay.obj \
test_channelpadding.obj \
test_circuitstats.obj \
+ test_circuitpadding.obj \
test_scheduler.obj test_introduce.obj test_hs.obj tinytest.obj
tinytest.obj: ..\ext\tinytest.c
diff --git a/src/test/bench.c b/src/test/bench.c
index f8680c3ab6..65fa617cbd 100644
--- a/src/test/bench.c
+++ b/src/test/bench.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -14,6 +14,8 @@
#include "core/crypto/onion_tap.h"
#include "core/crypto/relay_crypto.h"
+#include "lib/intmath/weakrng.h"
+
#ifdef ENABLE_OPENSSL
#include <openssl/opensslv.h>
#include <openssl/evp.h>
@@ -336,6 +338,65 @@ bench_ed25519(void)
}
static void
+bench_rand_len(int len)
+{
+ const int N = 100000;
+ int i;
+ char *buf = tor_malloc(len);
+ uint64_t start,end;
+
+ start = perftime();
+ for (i = 0; i < N; ++i) {
+ crypto_rand(buf, len);
+ }
+ end = perftime();
+ printf("crypto_rand(%d): %f nsec.\n", len, NANOCOUNT(start,end,N));
+
+ crypto_fast_rng_t *fr = crypto_fast_rng_new();
+ start = perftime();
+ for (i = 0; i < N; ++i) {
+ crypto_fast_rng_getbytes(fr,(uint8_t*)buf,len);
+ }
+ end = perftime();
+ printf("crypto_fast_rng_getbytes(%d): %f nsec.\n", len,
+ NANOCOUNT(start,end,N));
+ crypto_fast_rng_free(fr);
+
+ if (len <= 32) {
+ start = perftime();
+ for (i = 0; i < N; ++i) {
+ crypto_strongest_rand((uint8_t*)buf, len);
+ }
+ end = perftime();
+ printf("crypto_strongest_rand(%d): %f nsec.\n", len,
+ NANOCOUNT(start,end,N));
+ }
+
+ if (len == 4) {
+ tor_weak_rng_t weak;
+ tor_init_weak_random(&weak, 1337);
+
+ start = perftime();
+ uint32_t t=0;
+ for (i = 0; i < N; ++i) {
+ t += tor_weak_random(&weak);
+ }
+ end = perftime();
+ printf("weak_rand(4): %f nsec.\n", NANOCOUNT(start,end,N));
+ }
+
+ tor_free(buf);
+}
+
+static void
+bench_rand(void)
+{
+ bench_rand_len(4);
+ bench_rand_len(16);
+ bench_rand_len(128);
+}
+
+static void
bench_cell_aes(void)
{
uint64_t start, end;
@@ -695,6 +756,7 @@ static struct benchmark_t benchmarks[] = {
ENT(onion_TAP),
ENT(onion_ntor),
ENT(ed25519),
+ ENT(rand),
ENT(cell_aes),
ENT(cell_ops),
diff --git a/src/test/bt_test.py b/src/test/bt_test.py
index f8894aac0b..f9ca79efde 100755
--- a/src/test/bt_test.py
+++ b/src/test/bt_test.py
@@ -1,4 +1,4 @@
-# Copyright 2013-2018, The Tor Project, Inc
+# Copyright 2013-2019, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/ed25519_exts_ref.py b/src/test/ed25519_exts_ref.py
index a9090c9ed2..75562184b5 100644
--- a/src/test/ed25519_exts_ref.py
+++ b/src/test/ed25519_exts_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2014-2018, The Tor Project, Inc
+# Copyright 2014-2019, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/fakechans.h b/src/test/fakechans.h
index 0770be8e04..4006e1bec4 100644
--- a/src/test/fakechans.h
+++ b/src/test/fakechans.h
@@ -1,4 +1,4 @@
- /* Copyright (c) 2014-2018, The Tor Project, Inc. */
+ /* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_FAKECHANS_H
diff --git a/src/test/fuzz/dict/http b/src/test/fuzz/dict/http
index 63627ac380..aa3dec990d 100644
--- a/src/test/fuzz/dict/http
+++ b/src/test/fuzz/dict/http
@@ -4,7 +4,7 @@
#
# Extracted from directory_handle_command() in the tor source code
#
-# Copyright (c) 2016-2018, The Tor Project, Inc.
+# Copyright (c) 2016-2019, The Tor Project, Inc.
# See LICENSE for licensing information
#
# Usage:
diff --git a/src/test/fuzz/fuzz_consensus.c b/src/test/fuzz/fuzz_consensus.c
index 1a4195b418..656ef0bdb2 100644
--- a/src/test/fuzz/fuzz_consensus.c
+++ b/src/test/fuzz/fuzz_consensus.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define SIGCOMMON_PRIVATE
#include "core/or/or.h"
diff --git a/src/test/fuzz/fuzz_descriptor.c b/src/test/fuzz/fuzz_descriptor.c
index 3420113717..58ee3dbc35 100644
--- a/src/test/fuzz/fuzz_descriptor.c
+++ b/src/test/fuzz/fuzz_descriptor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define SIGCOMMON_PRIVATE
#include "core/or/or.h"
diff --git a/src/test/fuzz/fuzz_diff.c b/src/test/fuzz/fuzz_diff.c
index 64aecc8a64..a31445666c 100644
--- a/src/test/fuzz/fuzz_diff.c
+++ b/src/test/fuzz/fuzz_diff.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONSDIFF_PRIVATE
diff --git a/src/test/fuzz/fuzz_diff_apply.c b/src/test/fuzz/fuzz_diff_apply.c
index 9b25185225..d8a0f9e590 100644
--- a/src/test/fuzz/fuzz_diff_apply.c
+++ b/src/test/fuzz/fuzz_diff_apply.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONSDIFF_PRIVATE
diff --git a/src/test/fuzz/fuzz_extrainfo.c b/src/test/fuzz/fuzz_extrainfo.c
index da0fe80838..f18bd68d65 100644
--- a/src/test/fuzz/fuzz_extrainfo.c
+++ b/src/test/fuzz/fuzz_extrainfo.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define SIGCOMMON_PRIVATE
#include "core/or/or.h"
diff --git a/src/test/fuzz/fuzz_hsdescv2.c b/src/test/fuzz/fuzz_hsdescv2.c
index 667b58b3aa..34639b237c 100644
--- a/src/test/fuzz/fuzz_hsdescv2.c
+++ b/src/test/fuzz/fuzz_hsdescv2.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
#include "feature/dirparse/unparseable.h"
diff --git a/src/test/fuzz/fuzz_hsdescv3.c b/src/test/fuzz/fuzz_hsdescv3.c
index d5ddcc2e27..2cbd655898 100644
--- a/src/test/fuzz/fuzz_hsdescv3.c
+++ b/src/test/fuzz/fuzz_hsdescv3.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define HS_DESCRIPTOR_PRIVATE
diff --git a/src/test/fuzz/fuzz_http.c b/src/test/fuzz/fuzz_http.c
index 4341bfabae..44393b3a10 100644
--- a/src/test/fuzz/fuzz_http.c
+++ b/src/test/fuzz/fuzz_http.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/fuzz/fuzz_http_connect.c b/src/test/fuzz/fuzz_http_connect.c
index e03d9e29d8..2a597cae74 100644
--- a/src/test/fuzz/fuzz_http_connect.c
+++ b/src/test/fuzz/fuzz_http_connect.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/fuzz/fuzz_iptsv2.c b/src/test/fuzz/fuzz_iptsv2.c
index 265677eebe..76fa3c164e 100644
--- a/src/test/fuzz/fuzz_iptsv2.c
+++ b/src/test/fuzz/fuzz_iptsv2.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/fuzz/fuzz_microdesc.c b/src/test/fuzz/fuzz_microdesc.c
index ab54cf2a34..28fdc5e24d 100644
--- a/src/test/fuzz/fuzz_microdesc.c
+++ b/src/test/fuzz/fuzz_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/fuzz/fuzz_socks.c b/src/test/fuzz/fuzz_socks.c
index 2d93bea924..d6c416a0f9 100644
--- a/src/test/fuzz/fuzz_socks.c
+++ b/src/test/fuzz/fuzz_socks.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/fuzz/fuzz_strops.c b/src/test/fuzz/fuzz_strops.c
index 5da590acfa..64a6453050 100644
--- a/src/test/fuzz/fuzz_strops.c
+++ b/src/test/fuzz/fuzz_strops.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/fuzz/fuzz_vrs.c b/src/test/fuzz/fuzz_vrs.c
index f0d90d7cc6..7b61b8df2d 100644
--- a/src/test/fuzz/fuzz_vrs.c
+++ b/src/test/fuzz/fuzz_vrs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define NS_PARSE_PRIVATE
#define NETWORKSTATUS_PRIVATE
diff --git a/src/test/fuzz/fuzzing.h b/src/test/fuzz/fuzzing.h
index e90e5d58e0..150ac4aa7d 100644
--- a/src/test/fuzz/fuzzing.h
+++ b/src/test/fuzz/fuzzing.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef FUZZING_H
#define FUZZING_H
diff --git a/src/test/fuzz/fuzzing_common.c b/src/test/fuzz/fuzzing_common.c
index 21aa07cfe2..387c865a9b 100644
--- a/src/test/fuzz/fuzzing_common.c
+++ b/src/test/fuzz/fuzzing_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CRYPTO_ED25519_PRIVATE
#include "orconfig.h"
diff --git a/src/test/fuzz_static_testcases.sh b/src/test/fuzz_static_testcases.sh
index 138f85b106..f7b3adffb1 100755
--- a/src/test/fuzz_static_testcases.sh
+++ b/src/test/fuzz_static_testcases.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (c) 2016-2018, The Tor Project, Inc.
+# Copyright (c) 2016-2019, The Tor Project, Inc.
# See LICENSE for licensing information
set -e
diff --git a/src/test/hs_ntor_ref.py b/src/test/hs_ntor_ref.py
index 0c5756ad73..1b9772a5d6 100644
--- a/src/test/hs_ntor_ref.py
+++ b/src/test/hs_ntor_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2017-2018, The Tor Project, Inc
+# Copyright 2017-2019, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/hs_test_helpers.c b/src/test/hs_test_helpers.c
index dcec1b9d48..f2ae8398df 100644
--- a/src/test/hs_test_helpers.c
+++ b/src/test/hs_test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/hs_test_helpers.h b/src/test/hs_test_helpers.h
index b7c2714769..9662a83ba8 100644
--- a/src/test/hs_test_helpers.h
+++ b/src/test/hs_test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_HS_TEST_HELPERS_H
diff --git a/src/test/include.am b/src/test/include.am
index 4725e8cbaa..d585c2a38a 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -68,7 +68,8 @@ noinst_PROGRAMS+= \
src/test/test-process \
src/test/test_workqueue \
src/test/test-switch-id \
- src/test/test-timers
+ src/test/test-timers \
+ src/test/test-rng
endif
src_test_AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \
@@ -101,6 +102,7 @@ src_test_test_SOURCES += \
src/test/test_cell_queue.c \
src/test/test_channel.c \
src/test/test_channelpadding.c \
+ src/test/test_circuitpadding.c \
src/test/test_channeltls.c \
src/test/test_checkdir.c \
src/test/test_circuitlist.c \
@@ -119,6 +121,7 @@ src_test_test_SOURCES += \
src/test/test_controller_events.c \
src/test/test_crypto.c \
src/test/test_crypto_ope.c \
+ src/test/test_crypto_rng.c \
src/test/test_data.c \
src/test/test_dir.c \
src/test/test_dir_common.c \
@@ -156,6 +159,7 @@ src_test_test_SOURCES += \
src/test/test_periodic_event.c \
src/test/test_policy.c \
src/test/test_process.c \
+ src/test/test_prob_distr.c \
src/test/test_procmon.c \
src/test/test_proto_http.c \
src/test/test_proto_misc.c \
@@ -206,6 +210,7 @@ src_test_test_slow_SOURCES += \
src/test/test_slow.c \
src/test/test_crypto_slow.c \
src/test/test_process_slow.c \
+ src/test/test_prob_distr.c \
src/test/testing_common.c \
src/test/testing_rsakeys.c \
src/ext/tinytest.c
@@ -256,6 +261,12 @@ src_test_test_slow_CFLAGS = $(src_test_test_CFLAGS)
src_test_test_slow_LDADD = $(src_test_test_LDADD)
src_test_test_slow_LDFLAGS = $(src_test_test_LDFLAGS)
+src_test_test_rng_CPPFLAGS = $(src_test_test_CPPFLAGS)
+src_test_test_rng_CFLAGS = $(src_test_test_CFLAGS)
+src_test_test_rng_SOURCES = src/test/test_rng.c
+src_test_test_rng_LDFLAGS = $(src_test_test_LDFLAGS)
+src_test_test_rng_LDADD = $(src_test_test_LDADD)
+
src_test_test_memwipe_CPPFLAGS = $(src_test_test_CPPFLAGS)
# Don't use bugtrap cflags here: memwipe tests require memory violations.
src_test_test_memwipe_CFLAGS = $(TEST_CFLAGS)
diff --git a/src/test/log_test_helpers.c b/src/test/log_test_helpers.c
index 2e91b1ecdc..03c52dd6bd 100644
--- a/src/test/log_test_helpers.c
+++ b/src/test/log_test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define LOG_PRIVATE
#include "lib/log/log.h"
diff --git a/src/test/log_test_helpers.h b/src/test/log_test_helpers.h
index 6a774cdfc7..5d1c3c1914 100644
--- a/src/test/log_test_helpers.h
+++ b/src/test/log_test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/ntor_ref.py b/src/test/ntor_ref.py
index 56e97ece36..204f05e2ad 100755
--- a/src/test/ntor_ref.py
+++ b/src/test/ntor_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# Copyright 2012-2018, The Tor Project, Inc
+# Copyright 2012-2019, The Tor Project, Inc
# See LICENSE for licensing information
"""
diff --git a/src/test/ope_ref.py b/src/test/ope_ref.py
index 3677e57a61..f9bd97c546 100644
--- a/src/test/ope_ref.py
+++ b/src/test/ope_ref.py
@@ -1,5 +1,5 @@
#!/usr/bin/python3
-# Copyright 2018, The Tor Project, Inc. See LICENSE for licensing info.
+# Copyright 2018-2019, The Tor Project, Inc. See LICENSE for licensing info.
# Reference implementation for our rudimentary OPE code, used to
# generate test vectors. See crypto_ope.c for more details.
diff --git a/src/test/prob_distr_mpfr_ref.c b/src/test/prob_distr_mpfr_ref.c
new file mode 100644
index 0000000000..425733dc1b
--- /dev/null
+++ b/src/test/prob_distr_mpfr_ref.c
@@ -0,0 +1,64 @@
+/* Copyright 2012-2019, The Tor Project, Inc
+ * See LICENSE for licensing information */
+
+/** prob_distr_mpfr_ref.c
+ *
+ * Example reference file for GNU MPFR vectors tested in test_prob_distr.c .
+ * Code by Riastradh.
+ */
+
+#include <complex.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+
+/* Must come after <stdio.h> so we get mpfr_printf. */
+#include <mpfr.h>
+
+/* gcc -o mpfr prob_distr_mpfr_ref.c -lmpfr -lm */
+
+/* Computes logit(p) for p = .49999 */
+int
+main(void)
+{
+ mpfr_t p, q, r;
+ mpfr_init(p);
+ mpfr_set_prec(p, 200);
+ mpfr_init(q);
+ mpfr_set_prec(q, 200);
+ mpfr_init(r);
+ mpfr_set_prec(r, 200);
+ mpfr_set_d(p, .49999, MPFR_RNDN);
+ mpfr_set_d(q, 1, MPFR_RNDN);
+ /* r := q - p = 1 - p */
+ mpfr_sub(r, q, p, MPFR_RNDN);
+ /* q := p/r = p/(1 - p) */
+ mpfr_div(q, p, r, MPFR_RNDN);
+ /* r := log(q) = log(p/(1 - p)) */
+ mpfr_log(r, q, MPFR_RNDN);
+ mpfr_printf("mpfr 200-bit\t%.128Rg\n", r);
+
+ /*
+ * Print a double approximation to logit three different ways. All
+ * three agree bit for bit on the libms I tried, with the nextafter
+ * adjustment (which is well within the 10 eps relative error bound
+ * advertised). Apparently I must have used the Goldberg expression
+ * for what I wrote down in the test case.
+ */
+ printf("mpfr 53-bit\t%.17g\n", nextafter(mpfr_get_d(r, MPFR_RNDN), 0), 0);
+ volatile double p0 = .49999;
+ printf("log1p\t\t%.17g\n", nextafter(-log1p((1 - 2*p0)/p0), 0));
+ volatile double x = (1 - 2*p0)/p0;
+ volatile double xp1 = x + 1;
+ printf("Goldberg\t%.17g\n", -x*log(xp1)/(xp1 - 1));
+
+ /*
+ * Print a bad approximation, using the naive expression, to see a
+ * lot of wrong digits, far beyond the 10 eps relative error attained
+ * by -log1p((1 - 2*p)/p).
+ */
+ printf("naive\t\t%.17g\n", log(p0/(1 - p0)));
+
+ fflush(stdout);
+ return ferror(stdout);
+}
diff --git a/src/test/rend_test_helpers.c b/src/test/rend_test_helpers.c
index 85a679a967..f12d193cc5 100644
--- a/src/test/rend_test_helpers.c
+++ b/src/test/rend_test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/rend_test_helpers.h b/src/test/rend_test_helpers.h
index 103e143ec6..c10da52cd7 100644
--- a/src/test/rend_test_helpers.h
+++ b/src/test/rend_test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test-memwipe.c b/src/test/test-memwipe.c
index b00e854a1c..43754ed1c2 100644
--- a/src/test/test-memwipe.c
+++ b/src/test/test-memwipe.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -47,7 +47,8 @@ const char *s = NULL;
#ifdef OpenBSD
/* Disable some of OpenBSD's malloc protections for this test. This helps
* us do bad things, such as access freed buffers, without crashing. */
-const char *malloc_options="sufjj";
+extern const char *malloc_options;
+const char *malloc_options = "sufjj";
#endif
static unsigned
diff --git a/src/test/test-process.c b/src/test/test-process.c
index ec1b395002..eb28ad90e9 100644
--- a/src/test/test-process.c
+++ b/src/test/test-process.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2018, The Tor Project, Inc. */
+/* Copyright (c) 2011-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test-timers.c b/src/test/test-timers.c
index 923f51ecce..c80fb1e305 100644
--- a/src/test/test-timers.c
+++ b/src/test/test-timers.c
@@ -1,4 +1,4 @@
-/* Copyright 2016-2018, The Tor Project, Inc. */
+/* Copyright 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test.c b/src/test/test.c
index 13e8c71709..25e9da5591 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -845,6 +845,7 @@ struct testgroup_t testgroups[] = {
{ "channeltls/", channeltls_tests },
{ "checkdir/", checkdir_tests },
{ "circuitbuild/", circuitbuild_tests },
+ { "circuitpadding/", circuitpadding_tests },
{ "circuitlist/", circuitlist_tests },
{ "circuitmux/", circuitmux_tests },
{ "circuitstats/", circuitstats_tests },
@@ -865,6 +866,7 @@ struct testgroup_t testgroups[] = {
{ "crypto/openssl/", crypto_openssl_tests },
#endif
{ "crypto/pem/", pem_tests },
+ { "crypto/rng/", crypto_rng_tests },
{ "dir/", dir_tests },
{ "dir/md/", microdesc_tests },
{ "dir/voting/flags/", voting_flags_tests },
@@ -900,6 +902,7 @@ struct testgroup_t testgroups[] = {
{ "parsecommon/", parsecommon_tests },
{ "periodic-event/" , periodic_event_tests },
{ "policy/" , policy_tests },
+ { "prob_distr/", prob_distr_tests },
{ "procmon/", procmon_tests },
{ "process/", process_tests },
{ "proto/http/", proto_http_tests },
diff --git a/src/test/test.h b/src/test/test.h
index 9f754469c8..2564432985 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TEST_H
@@ -187,6 +187,7 @@ extern struct testcase_t cell_format_tests[];
extern struct testcase_t cell_queue_tests[];
extern struct testcase_t channel_tests[];
extern struct testcase_t channelpadding_tests[];
+extern struct testcase_t circuitpadding_tests[];
extern struct testcase_t channeltls_tests[];
extern struct testcase_t checkdir_tests[];
extern struct testcase_t circuitbuild_tests[];
@@ -205,6 +206,7 @@ extern struct testcase_t controller_event_tests[];
extern struct testcase_t controller_tests[];
extern struct testcase_t crypto_ope_tests[];
extern struct testcase_t crypto_openssl_tests[];
+extern struct testcase_t crypto_rng_tests[];
extern struct testcase_t crypto_tests[];
extern struct testcase_t dir_handle_get_tests[];
extern struct testcase_t dir_tests[];
@@ -242,6 +244,8 @@ extern struct testcase_t parsecommon_tests[];
extern struct testcase_t pem_tests[];
extern struct testcase_t periodic_event_tests[];
extern struct testcase_t policy_tests[];
+extern struct testcase_t prob_distr_tests[];
+extern struct testcase_t slow_stochastic_prob_distr_tests[];
extern struct testcase_t procmon_tests[];
extern struct testcase_t process_tests[];
extern struct testcase_t proto_http_tests[];
diff --git a/src/test/test_accounting.c b/src/test/test_accounting.c
index 7721a9eb99..8ae8fe4343 100644
--- a/src/test/test_accounting.c
+++ b/src/test/test_accounting.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index 1d97db52a6..1aa7a3dcd6 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESSMAP_PRIVATE
diff --git a/src/test/test_address.c b/src/test/test_address.c
index a823fd9cd5..bf9ca047dc 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ADDRESS_PRIVATE
@@ -746,7 +746,7 @@ test_address_get_if_addrs_list_internal(void *arg)
(void)arg;
- results = get_interface_address_list(LOG_ERR, 1);
+ results = get_interface_address_list(LOG_WARN, 1);
tt_ptr_op(results, OP_NE, NULL);
/* When the network is down, a system might not have any non-local
@@ -777,7 +777,7 @@ test_address_get_if_addrs_list_no_internal(void *arg)
(void)arg;
- results = get_interface_address_list(LOG_ERR, 0);
+ results = get_interface_address_list(LOG_WARN, 0);
tt_ptr_op(results, OP_NE, NULL);
/* Work even on systems with only internal IPv4 addresses */
@@ -988,7 +988,7 @@ test_address_get_if_addrs(void *arg)
(void)arg;
- rv = get_interface_address(LOG_ERR, &addr_h);
+ rv = get_interface_address(LOG_WARN, &addr_h);
/* When the network is down, a system might not have any non-local
* non-multicast IPv4 addresses, not even internal ones.
@@ -1015,7 +1015,7 @@ test_address_get_if_addrs6(void *arg)
(void)arg;
- rv = get_interface_address6(LOG_ERR, AF_INET6, &tor_addr);
+ rv = get_interface_address6(LOG_WARN, AF_INET6, &tor_addr);
/* Work even on systems without IPv6 interfaces */
if (rv == 0) {
diff --git a/src/test/test_address_set.c b/src/test/test_address_set.c
index f231740011..fb8408b3c3 100644
--- a/src/test/test_address_set.c
+++ b/src/test/test_address_set.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_bridges.c b/src/test/test_bridges.c
index 1cad5445f4..879ae6636b 100644
--- a/src/test/test_bridges.c
+++ b/src/test/test_bridges.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_bt.sh b/src/test/test_bt.sh
index df8bcb8eda..312905a4e2 100755
--- a/src/test/test_bt.sh
+++ b/src/test/test_bt.sh
@@ -3,8 +3,6 @@
exitcode=0
-ulimit -c 0
-
export ASAN_OPTIONS="handle_segv=0:allow_user_segv_handler=1"
"${builddir:-.}/src/test/test-bt-cl" backtraces || exit $?
"${builddir:-.}/src/test/test-bt-cl" assert 2>&1 | "${PYTHON:-python}" "${abs_top_srcdir:-.}/src/test/bt_test.py" || exitcode="$?"
diff --git a/src/test/test_bt_cl.c b/src/test/test_bt_cl.c
index 89cbca2066..08b08ba423 100644
--- a/src/test/test_bt_cl.c
+++ b/src/test/test_bt_cl.c
@@ -1,9 +1,12 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
#include <stdio.h>
#include <stdlib.h>
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
/* To prevent 'assert' from going away. */
#undef TOR_COVERAGE
@@ -88,6 +91,11 @@ main(int argc, char **argv)
return 1;
}
+#ifdef HAVE_SYS_RESOURCE_H
+ struct rlimit rlim = { .rlim_cur = 0, .rlim_max = 0 };
+ setrlimit(RLIMIT_CORE, &rlim);
+#endif
+
#if !(defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && \
defined(HAVE_BACKTRACE_SYMBOLS_FD) && defined(HAVE_SIGACTION))
puts("Backtrace reporting is not supported on this platform");
diff --git a/src/test/test_btrack.c b/src/test/test_btrack.c
index 7b5d108f98..48486fb5a1 100644
--- a/src/test/test_btrack.c
+++ b/src/test/test_btrack.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c
index 85e7b8d90a..97311c85cc 100644
--- a/src/test/test_buffers.c
+++ b/src/test/test_buffers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define BUFFERS_PRIVATE
diff --git a/src/test/test_bwmgt.c b/src/test/test_bwmgt.c
index 7a1782c2c9..5a013aa268 100644
--- a/src/test/test_bwmgt.c
+++ b/src/test/test_bwmgt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_cell_formats.c b/src/test/test_cell_formats.c
index daf0296e2a..fc5367557d 100644
--- a/src/test/test_cell_formats.c
+++ b/src/test/test_cell_formats.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_cell_queue.c b/src/test/test_cell_queue.c
index d74bb9c622..8fc1da031e 100644
--- a/src/test/test_cell_queue.c
+++ b/src/test/test_cell_queue.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITLIST_PRIVATE
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
index 26af8de917..e55b9b0750 100644
--- a/src/test/test_channel.c
+++ b/src/test/test_channel.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_channelpadding.c b/src/test/test_channelpadding.c
index bdd7c5f0a6..5d012e462b 100644
--- a/src/test/test_channelpadding.c
+++ b/src/test/test_channelpadding.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_channeltls.c b/src/test/test_channeltls.c
index 44d623561b..054d3910e4 100644
--- a/src/test/test_channeltls.c
+++ b/src/test/test_channeltls.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_checkdir.c b/src/test/test_checkdir.c
index 652e308ed8..1df74c390a 100644
--- a/src/test/test_checkdir.c
+++ b/src/test/test_checkdir.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_circuitbuild.c b/src/test/test_circuitbuild.c
index dd47ad7689..27f2cd1ca5 100644
--- a/src/test/test_circuitbuild.c
+++ b/src/test/test_circuitbuild.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITBUILD_PRIVATE
diff --git a/src/test/test_circuitlist.c b/src/test/test_circuitlist.c
index 8dd7f5f5a9..5cebdbeda0 100644
--- a/src/test/test_circuitlist.c
+++ b/src/test/test_circuitlist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_circuitmux.c b/src/test/test_circuitmux.c
index 1be2ff5281..a2b3e62fe8 100644
--- a/src/test/test_circuitmux.c
+++ b/src/test/test_circuitmux.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_CHANNEL_INTERNAL_
diff --git a/src/test/test_circuitpadding.c b/src/test/test_circuitpadding.c
new file mode 100644
index 0000000000..eee1edc50c
--- /dev/null
+++ b/src/test/test_circuitpadding.c
@@ -0,0 +1,2361 @@
+#define TOR_CHANNEL_INTERNAL_
+#define TOR_TIMERS_PRIVATE
+#define CIRCUITPADDING_PRIVATE
+#define NETWORKSTATUS_PRIVATE
+
+#include "core/or/or.h"
+#include "test.h"
+#include "lib/testsupport/testsupport.h"
+#include "core/or/connection_or.h"
+#include "core/or/channel.h"
+#include "core/or/channeltls.h"
+#include <event.h>
+#include "lib/evloop/compat_libevent.h"
+#include "lib/time/compat_time.h"
+#include "lib/defs/time.h"
+#include "core/or/relay.h"
+#include "core/or/circuitlist.h"
+#include "core/or/circuitbuild.h"
+#include "core/or/circuitpadding.h"
+#include "core/crypto/relay_crypto.h"
+#include "core/or/protover.h"
+#include "feature/nodelist/nodelist.h"
+#include "lib/evloop/compat_libevent.h"
+#include "app/config/config.h"
+
+#include "feature/nodelist/routerstatus_st.h"
+#include "feature/nodelist/networkstatus_st.h"
+#include "feature/nodelist/node_st.h"
+#include "core/or/cell_st.h"
+#include "core/or/crypt_path_st.h"
+#include "core/or/or_circuit_st.h"
+#include "core/or/origin_circuit_st.h"
+
+extern smartlist_t *connection_array;
+
+circid_t get_unique_circ_id_by_chan(channel_t *chan);
+void helper_create_basic_machine(void);
+static void helper_create_conditional_machines(void);
+
+static or_circuit_t * new_fake_orcirc(channel_t *nchan, channel_t *pchan);
+channel_t *new_fake_channel(void);
+void test_circuitpadding_negotiation(void *arg);
+void test_circuitpadding_wronghop(void *arg);
+void test_circuitpadding_conditions(void *arg);
+
+void test_circuitpadding_serialize(void *arg);
+void test_circuitpadding_rtt(void *arg);
+void test_circuitpadding_tokens(void *arg);
+
+static void
+simulate_single_hop_extend(circuit_t *client, circuit_t *mid_relay,
+ int padding);
+void free_fake_orcirc(circuit_t *circ);
+void free_fake_origin_circuit(origin_circuit_t *circ);
+
+static int deliver_negotiated = 1;
+static int64_t curr_mocked_time;
+
+static node_t padding_node;
+static node_t non_padding_node;
+
+static channel_t dummy_channel;
+static circpad_machine_spec_t circ_client_machine;
+
+static void
+timers_advance_and_run(int64_t msec_update)
+{
+ curr_mocked_time += msec_update*TOR_NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(curr_mocked_time);
+ monotime_set_mock_time_nsec(curr_mocked_time);
+ timers_run_pending();
+}
+
+static void
+nodes_init(void)
+{
+ padding_node.rs = tor_malloc_zero(sizeof(routerstatus_t));
+ padding_node.rs->pv.supports_padding = 1;
+
+ non_padding_node.rs = tor_malloc_zero(sizeof(routerstatus_t));
+ non_padding_node.rs->pv.supports_padding = 0;
+}
+
+static void
+nodes_free(void)
+{
+ tor_free(padding_node.rs);
+
+ tor_free(non_padding_node.rs);
+}
+
+static const node_t *
+node_get_by_id_mock(const char *identity_digest)
+{
+ if (identity_digest[0] == 1) {
+ return &padding_node;
+ } else if (identity_digest[0] == 0) {
+ return &non_padding_node;
+ }
+
+ return NULL;
+}
+
+static or_circuit_t *
+new_fake_orcirc(channel_t *nchan, channel_t *pchan)
+{
+ or_circuit_t *orcirc = NULL;
+ circuit_t *circ = NULL;
+ crypt_path_t tmp_cpath;
+ char whatevs_key[CPATH_KEY_MATERIAL_LEN];
+
+ orcirc = tor_malloc_zero(sizeof(*orcirc));
+ circ = &(orcirc->base_);
+ circ->magic = OR_CIRCUIT_MAGIC;
+
+ //circ->n_chan = nchan;
+ circ->n_circ_id = get_unique_circ_id_by_chan(nchan);
+ circ->n_mux = NULL; /* ?? */
+ cell_queue_init(&(circ->n_chan_cells));
+ circ->n_hop = NULL;
+ circ->streams_blocked_on_n_chan = 0;
+ circ->streams_blocked_on_p_chan = 0;
+ circ->n_delete_pending = 0;
+ circ->p_delete_pending = 0;
+ circ->received_destroy = 0;
+ circ->state = CIRCUIT_STATE_OPEN;
+ circ->purpose = CIRCUIT_PURPOSE_OR;
+ circ->package_window = CIRCWINDOW_START_MAX;
+ circ->deliver_window = CIRCWINDOW_START_MAX;
+ circ->n_chan_create_cell = NULL;
+
+ //orcirc->p_chan = pchan;
+ orcirc->p_circ_id = get_unique_circ_id_by_chan(pchan);
+ cell_queue_init(&(orcirc->p_chan_cells));
+
+ circuit_set_p_circid_chan(orcirc, orcirc->p_circ_id, pchan);
+ circuit_set_n_circid_chan(circ, circ->n_circ_id, nchan);
+
+ memset(&tmp_cpath, 0, sizeof(tmp_cpath));
+ if (circuit_init_cpath_crypto(&tmp_cpath, whatevs_key,
+ sizeof(whatevs_key), 0, 0)<0) {
+ log_warn(LD_BUG,"Circuit initialization failed");
+ return NULL;
+ }
+ orcirc->crypto = tmp_cpath.crypto;
+
+ return orcirc;
+}
+
+void
+free_fake_orcirc(circuit_t *circ)
+{
+ or_circuit_t *orcirc = TO_OR_CIRCUIT(circ);
+
+ relay_crypto_clear(&orcirc->crypto);
+
+ circpad_circuit_free_all_machineinfos(circ);
+ tor_free(circ);
+}
+
+void
+free_fake_origin_circuit(origin_circuit_t *circ)
+{
+ circpad_circuit_free_all_machineinfos(TO_CIRCUIT(circ));
+ circuit_clear_cpath(circ);
+ tor_free(circ);
+}
+
+void dummy_nop_timer(void);
+
+//static int dont_stop_libevent = 0;
+
+static circuit_t *client_side;
+static circuit_t *relay_side;
+
+static int n_client_cells = 0;
+static int n_relay_cells = 0;
+
+static int
+circuit_package_relay_cell_mock(cell_t *cell, circuit_t *circ,
+ cell_direction_t cell_direction,
+ crypt_path_t *layer_hint, streamid_t on_stream,
+ const char *filename, int lineno);
+
+static void
+circuitmux_attach_circuit_mock(circuitmux_t *cmux, circuit_t *circ,
+ cell_direction_t direction);
+
+static void
+circuitmux_attach_circuit_mock(circuitmux_t *cmux, circuit_t *circ,
+ cell_direction_t direction)
+{
+ (void)cmux;
+ (void)circ;
+ (void)direction;
+
+ return;
+}
+
+static int
+circuit_package_relay_cell_mock(cell_t *cell, circuit_t *circ,
+ cell_direction_t cell_direction,
+ crypt_path_t *layer_hint, streamid_t on_stream,
+ const char *filename, int lineno)
+{
+ (void)cell; (void)on_stream; (void)filename; (void)lineno;
+
+ if (circ == client_side) {
+ if (cell->payload[0] == RELAY_COMMAND_PADDING_NEGOTIATE) {
+ // Deliver to relay
+ circpad_handle_padding_negotiate(relay_side, cell);
+ } else {
+
+ int is_target_hop = circpad_padding_is_from_expected_hop(circ,
+ layer_hint);
+ tt_int_op(cell_direction, OP_EQ, CELL_DIRECTION_OUT);
+ tt_int_op(is_target_hop, OP_EQ, 1);
+
+ // No need to pretend a padding cell was sent: This event is
+ // now emitted internally when the circuitpadding code sends them.
+ //circpad_cell_event_padding_sent(client_side);
+
+ // Receive padding cell at middle
+ circpad_deliver_recognized_relay_cell_events(relay_side,
+ cell->payload[0], NULL);
+ }
+ n_client_cells++;
+ } else if (circ == relay_side) {
+ tt_int_op(cell_direction, OP_EQ, CELL_DIRECTION_IN);
+
+ if (cell->payload[0] == RELAY_COMMAND_PADDING_NEGOTIATED) {
+ // XXX: blah need right layer_hint..
+ if (deliver_negotiated)
+ circpad_handle_padding_negotiated(client_side, cell,
+ TO_ORIGIN_CIRCUIT(client_side)
+ ->cpath->next);
+ } else if (cell->payload[0] == RELAY_COMMAND_PADDING_NEGOTIATE) {
+ circpad_handle_padding_negotiate(client_side, cell);
+ } else {
+ // No need to pretend a padding cell was sent: This event is
+ // now emitted internally when the circuitpadding code sends them.
+ //circpad_cell_event_padding_sent(relay_side);
+
+ // Receive padding cell at client
+ circpad_deliver_recognized_relay_cell_events(client_side,
+ cell->payload[0],
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next);
+ }
+
+ n_relay_cells++;
+ }
+
+ done:
+ timers_advance_and_run(1);
+ return 0;
+}
+
+// Test reading and writing padding to strings (or options_t + consensus)
+void
+test_circuitpadding_serialize(void *arg)
+{
+ (void)arg;
+}
+
+static signed_error_t
+circpad_send_command_to_hop_mock(origin_circuit_t *circ, uint8_t hopnum,
+ uint8_t relay_command, const uint8_t *payload,
+ ssize_t payload_len)
+{
+ (void) circ;
+ (void) hopnum;
+ (void) relay_command;
+ (void) payload;
+ (void) payload_len;
+ return 0;
+}
+
+void
+test_circuitpadding_rtt(void *arg)
+{
+ /* Test Plan:
+ *
+ * 1. Test RTT measurement server side
+ * a. test usage of measured RTT
+ * 2. Test termination of RTT measurement
+ * a. test non-update of RTT
+ * 3. Test client side circuit and non-application of RTT..
+ */
+ circpad_delay_t rtt_estimate;
+ (void)arg;
+
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+ MOCK(circpad_send_command_to_hop, circpad_send_command_to_hop_mock);
+
+ dummy_channel.cmux = circuitmux_alloc();
+ relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+ circpad_machines_init();
+ helper_create_basic_machine();
+
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] = circpad_circuit_machineinfo_new(client_side,
+ 0);
+
+ relay_side->padding_machine[0] = &circ_client_machine;
+ relay_side->padding_info[0] = circpad_circuit_machineinfo_new(client_side,0);
+
+ /* Test 1: Test measuring RTT */
+ circpad_cell_event_nonpadding_received((circuit_t*)relay_side);
+ tt_u64_op(relay_side->padding_info[0]->last_received_time_usec, OP_NE, 0);
+
+ timers_advance_and_run(20);
+
+ circpad_cell_event_nonpadding_sent((circuit_t*)relay_side);
+ tt_u64_op(relay_side->padding_info[0]->last_received_time_usec, OP_EQ, 0);
+
+ tt_int_op(relay_side->padding_info[0]->rtt_estimate_usec, OP_GE, 19000);
+ tt_int_op(relay_side->padding_info[0]->rtt_estimate_usec, OP_LE, 30000);
+ tt_int_op(circpad_histogram_bin_to_usec(relay_side->padding_info[0], 0),
+ OP_EQ,
+ relay_side->padding_info[0]->rtt_estimate_usec+
+ circpad_machine_current_state(
+ relay_side->padding_info[0])->start_usec);
+
+ circpad_cell_event_nonpadding_received((circuit_t*)relay_side);
+ circpad_cell_event_nonpadding_received((circuit_t*)relay_side);
+ tt_u64_op(relay_side->padding_info[0]->last_received_time_usec, OP_NE, 0);
+ timers_advance_and_run(20);
+ circpad_cell_event_nonpadding_sent((circuit_t*)relay_side);
+ circpad_cell_event_nonpadding_sent((circuit_t*)relay_side);
+ tt_u64_op(relay_side->padding_info[0]->last_received_time_usec, OP_EQ, 0);
+
+ tt_int_op(relay_side->padding_info[0]->rtt_estimate_usec, OP_GE, 20000);
+ tt_int_op(relay_side->padding_info[0]->rtt_estimate_usec, OP_LE, 21000);
+ tt_int_op(circpad_histogram_bin_to_usec(relay_side->padding_info[0], 0),
+ OP_EQ,
+ relay_side->padding_info[0]->rtt_estimate_usec+
+ circpad_machine_current_state(
+ relay_side->padding_info[0])->start_usec);
+
+ /* Test 2: Termination of RTT measurement (from the previous test) */
+ tt_int_op(relay_side->padding_info[0]->stop_rtt_update, OP_EQ, 1);
+ rtt_estimate = relay_side->padding_info[0]->rtt_estimate_usec;
+
+ circpad_cell_event_nonpadding_received((circuit_t*)relay_side);
+ timers_advance_and_run(4);
+ circpad_cell_event_nonpadding_sent((circuit_t*)relay_side);
+
+ tt_int_op(relay_side->padding_info[0]->rtt_estimate_usec, OP_EQ,
+ rtt_estimate);
+ tt_u64_op(relay_side->padding_info[0]->last_received_time_usec, OP_EQ, 0);
+ tt_int_op(relay_side->padding_info[0]->stop_rtt_update, OP_EQ, 1);
+ tt_int_op(circpad_histogram_bin_to_usec(relay_side->padding_info[0], 0),
+ OP_EQ,
+ relay_side->padding_info[0]->rtt_estimate_usec+
+ circpad_machine_current_state(
+ relay_side->padding_info[0])->start_usec);
+
+ /* Test 3: Make sure client side machine properly ignores RTT */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_u64_op(client_side->padding_info[0]->last_received_time_usec, OP_EQ, 0);
+
+ timers_advance_and_run(20);
+ circpad_cell_event_nonpadding_sent((circuit_t*)client_side);
+ tt_u64_op(client_side->padding_info[0]->last_received_time_usec, OP_EQ, 0);
+
+ tt_int_op(client_side->padding_info[0]->rtt_estimate_usec, OP_EQ, 0);
+ tt_int_op(circpad_histogram_bin_to_usec(client_side->padding_info[0], 0),
+ OP_NE, client_side->padding_info[0]->rtt_estimate_usec);
+ tt_int_op(circpad_histogram_bin_to_usec(client_side->padding_info[0], 0),
+ OP_EQ,
+ circpad_machine_current_state(
+ client_side->padding_info[0])->start_usec);
+ done:
+ free_fake_orcirc(relay_side);
+ circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
+ circuitmux_free(dummy_channel.cmux);
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ UNMOCK(circuit_package_relay_cell);
+ UNMOCK(circuitmux_attach_circuit);
+ tor_free(circ_client_machine.states);
+
+ return;
+}
+
+void
+helper_create_basic_machine(void)
+{
+ /* Start, burst */
+ circpad_machine_states_init(&circ_client_machine, 2);
+
+ circ_client_machine.states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ circ_client_machine.states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ circ_client_machine.states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_NONPADDING_SENT] = CIRCPAD_STATE_CANCEL;
+
+ // FIXME: Is this what we want?
+ circ_client_machine.states[CIRCPAD_STATE_BURST].token_removal =
+ CIRCPAD_TOKEN_REMOVAL_HIGHER;
+
+ // FIXME: Tune this histogram
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram_len = 5;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 500;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].range_usec = 1000000;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram[0] = 1;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram[1] = 0;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram[2] = 2;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram[3] = 2;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram[4] = 2;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].histogram_total_tokens = 7;
+ circ_client_machine.states[CIRCPAD_STATE_BURST].use_rtt_estimate = 1;
+
+ return;
+}
+
+#define BIG_HISTOGRAM_LEN 10
+
+/** Setup a machine with a big histogram */
+static void
+helper_create_machine_with_big_histogram(circpad_removal_t removal_strategy)
+{
+ const int tokens_per_bin = 2;
+
+ /* Start, burst */
+ circpad_machine_states_init(&circ_client_machine, 2);
+
+ circpad_state_t *burst_state =
+ &circ_client_machine.states[CIRCPAD_STATE_BURST];
+
+ circ_client_machine.states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
+
+ burst_state->next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
+ burst_state->next_state[CIRCPAD_EVENT_NONPADDING_RECV] =CIRCPAD_STATE_BURST;
+
+ burst_state->next_state[CIRCPAD_EVENT_NONPADDING_SENT] =CIRCPAD_STATE_CANCEL;
+
+ burst_state->token_removal = CIRCPAD_TOKEN_REMOVAL_HIGHER;
+
+ burst_state->histogram_len = BIG_HISTOGRAM_LEN;
+ burst_state->start_usec = 0;
+ burst_state->range_usec = 1000;
+
+ int n_tokens = 0;
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ burst_state->histogram[i] = tokens_per_bin;
+ n_tokens += tokens_per_bin;
+ }
+
+ burst_state->histogram_total_tokens = n_tokens;
+ burst_state->length_dist.type = CIRCPAD_DIST_UNIFORM;
+ burst_state->length_dist.param1 = n_tokens;
+ burst_state->length_dist.param2 = n_tokens;
+ burst_state->max_length = n_tokens;
+ burst_state->length_includes_nonpadding = 1;
+ burst_state->use_rtt_estimate = 0;
+ burst_state->token_removal = removal_strategy;
+}
+
+static circpad_decision_t
+circpad_machine_schedule_padding_mock(circpad_machine_state_t *mi)
+{
+ (void)mi;
+ return 0;
+}
+
+static uint64_t
+mock_monotime_absolute_usec(void)
+{
+ return 100;
+}
+
+/** Test higher token removal strategy by bin */
+static void
+test_circuitpadding_token_removal_higher(void *arg)
+{
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /* Mock it up */
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ /* Setup test environment (time etc.) */
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ monotime_enable_test_mocking();
+
+ /* Create test machine */
+ helper_create_machine_with_big_histogram(CIRCPAD_TOKEN_REMOVAL_HIGHER);
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+
+ /* move the machine to the right state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ /* Get the machine and setup tokens */
+ mi = client_side->padding_info[0];
+ tt_assert(mi);
+
+ /*************************************************************************/
+
+ uint64_t current_time = monotime_absolute_usec();
+
+ /* Test left boundaries of each histogram bin: */
+ const circpad_delay_t bin_left_bounds[] =
+ {0, 1, 7, 15, 31, 62, 125, 250, 500, CIRCPAD_DELAY_INFINITE};
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_uint_op(bin_left_bounds[i], OP_EQ,
+ circpad_histogram_bin_to_usec(mi, i));
+ }
+
+ /* Check that all bins have two tokens right now */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* This is the right order to remove tokens from this histogram. That is, we
+ * first remove tokens from the 4th bin since 57 usec is nearest to the 4th
+ * bin midpoint (31 + (62-31)/2 == 46). Then we remove from the 3rd bin for
+ * the same reason, then from the 5th, etc. */
+ const int bin_removal_order[] = {4, 5, 6, 7, 8};
+ unsigned i;
+
+ /* Remove all tokens from all bins apart from the infinity bin */
+ for (i = 0; i < sizeof(bin_removal_order)/sizeof(int) ; i++) {
+ int bin_to_remove = bin_removal_order[i];
+ log_debug(LD_GENERAL, "Testing that %d attempt removes %d bin",
+ i, bin_to_remove);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 2);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 1);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ /* Test that we cleaned out this bin. Don't do this in the case of the last
+ bin since the tokens will get refilled */
+ if (i != BIG_HISTOGRAM_LEN - 2) {
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 0);
+ }
+ }
+
+ /* Check that all lowe bins are not touched */
+ for (i=0; i < 4 ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* Test below the lowest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 1;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[0], OP_EQ, 1);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+/** Test lower token removal strategy by bin */
+static void
+test_circuitpadding_token_removal_lower(void *arg)
+{
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /* Mock it up */
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ /* Setup test environment (time etc.) */
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ monotime_enable_test_mocking();
+
+ /* Create test machine */
+ helper_create_machine_with_big_histogram(CIRCPAD_TOKEN_REMOVAL_LOWER);
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+
+ /* move the machine to the right state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ /* Get the machine and setup tokens */
+ mi = client_side->padding_info[0];
+ tt_assert(mi);
+
+ /*************************************************************************/
+
+ uint64_t current_time = monotime_absolute_usec();
+
+ /* Test left boundaries of each histogram bin: */
+ const circpad_delay_t bin_left_bounds[] =
+ {0, 1, 7, 15, 31, 62, 125, 250, 500, CIRCPAD_DELAY_INFINITE};
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_uint_op(bin_left_bounds[i], OP_EQ,
+ circpad_histogram_bin_to_usec(mi, i));
+ }
+
+ /* Check that all bins have two tokens right now */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* This is the right order to remove tokens from this histogram. That is, we
+ * first remove tokens from the 4th bin since 57 usec is nearest to the 4th
+ * bin midpoint (31 + (62-31)/2 == 46). Then we remove from the 3rd bin for
+ * the same reason, then from the 5th, etc. */
+ const int bin_removal_order[] = {4, 3, 2, 1, 0};
+ unsigned i;
+
+ /* Remove all tokens from all bins apart from the infinity bin */
+ for (i = 0; i < sizeof(bin_removal_order)/sizeof(int) ; i++) {
+ int bin_to_remove = bin_removal_order[i];
+ log_debug(LD_GENERAL, "Testing that %d attempt removes %d bin",
+ i, bin_to_remove);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 2);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 1);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ /* Test that we cleaned out this bin. Don't do this in the case of the last
+ bin since the tokens will get refilled */
+ if (i != BIG_HISTOGRAM_LEN - 2) {
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 0);
+ }
+ }
+
+ /* Check that all higher bins are untouched */
+ for (i = 5; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* Test above the highest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 29202;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[BIG_HISTOGRAM_LEN-2], OP_EQ, 1);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+/** Test closest token removal strategy by bin */
+static void
+test_circuitpadding_closest_token_removal(void *arg)
+{
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /* Mock it up */
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ /* Setup test environment (time etc.) */
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ monotime_enable_test_mocking();
+
+ /* Create test machine */
+ helper_create_machine_with_big_histogram(CIRCPAD_TOKEN_REMOVAL_CLOSEST);
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+
+ /* move the machine to the right state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ /* Get the machine and setup tokens */
+ mi = client_side->padding_info[0];
+ tt_assert(mi);
+
+ /*************************************************************************/
+
+ uint64_t current_time = monotime_absolute_usec();
+
+ /* Test left boundaries of each histogram bin: */
+ const circpad_delay_t bin_left_bounds[] =
+ {0, 1, 7, 15, 31, 62, 125, 250, 500, CIRCPAD_DELAY_INFINITE};
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_uint_op(bin_left_bounds[i], OP_EQ,
+ circpad_histogram_bin_to_usec(mi, i));
+ }
+
+ /* Check that all bins have two tokens right now */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* This is the right order to remove tokens from this histogram. That is, we
+ * first remove tokens from the 4th bin since 57 usec is nearest to the 4th
+ * bin midpoint (31 + (62-31)/2 == 46). Then we remove from the 3rd bin for
+ * the same reason, then from the 5th, etc. */
+ const int bin_removal_order[] = {4, 3, 5, 2, 6, 1, 7, 0, 8, 9};
+
+ /* Remove all tokens from all bins apart from the infinity bin */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN-1 ; i++) {
+ int bin_to_remove = bin_removal_order[i];
+ log_debug(LD_GENERAL, "Testing that %d attempt removes %d bin",
+ i, bin_to_remove);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 2);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 1);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ /* Test that we cleaned out this bin. Don't do this in the case of the last
+ bin since the tokens will get refilled */
+ if (i != BIG_HISTOGRAM_LEN - 2) {
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 0);
+ }
+ }
+
+ /* Check that all bins have been refilled */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* Test below the lowest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 102;
+ mi->histogram[0] = 0;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[1], OP_EQ, 1);
+
+ /* Test above the highest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 29202;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[BIG_HISTOGRAM_LEN-2], OP_EQ, 1);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+/** Test closest token removal strategy with usec */
+static void
+test_circuitpadding_closest_token_removal_usec(void *arg)
+{
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /* Mock it up */
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ /* Setup test environment (time etc.) */
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ monotime_enable_test_mocking();
+
+ /* Create test machine */
+ helper_create_machine_with_big_histogram(CIRCPAD_TOKEN_REMOVAL_CLOSEST_USEC);
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+
+ /* move the machine to the right state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ /* Get the machine and setup tokens */
+ mi = client_side->padding_info[0];
+ tt_assert(mi);
+
+ /*************************************************************************/
+
+ uint64_t current_time = monotime_absolute_usec();
+
+ /* Test left boundaries of each histogram bin: */
+ const circpad_delay_t bin_left_bounds[] =
+ {0, 1, 7, 15, 31, 62, 125, 250, 500, CIRCPAD_DELAY_INFINITE};
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_uint_op(bin_left_bounds[i], OP_EQ,
+ circpad_histogram_bin_to_usec(mi, i));
+ }
+
+ /* XXX we want to test remove_token_exact and
+ circpad_machine_remove_closest_token() with usec */
+
+ /* Check that all bins have two tokens right now */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* This is the right order to remove tokens from this histogram. That is, we
+ * first remove tokens from the 4th bin since 57 usec is nearest to the 4th
+ * bin midpoint (31 + (62-31)/2 == 46). Then we remove from the 3rd bin for
+ * the same reason, then from the 5th, etc. */
+ const int bin_removal_order[] = {4, 3, 5, 2, 1, 0, 6, 7, 8, 9};
+
+ /* Remove all tokens from all bins apart from the infinity bin */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN-1 ; i++) {
+ int bin_to_remove = bin_removal_order[i];
+ log_debug(LD_GENERAL, "Testing that %d attempt removes %d bin",
+ i, bin_to_remove);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 2);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 1);
+
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+
+ /* Test that we cleaned out this bin. Don't do this in the case of the last
+ bin since the tokens will get refilled */
+ if (i != BIG_HISTOGRAM_LEN - 2) {
+ tt_int_op(mi->histogram[bin_to_remove], OP_EQ, 0);
+ }
+ }
+
+ /* Check that all bins have been refilled */
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+
+ /* Test below the lowest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 102;
+ mi->histogram[0] = 0;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[1], OP_EQ, 1);
+
+ /* Test above the highest bin, for coverage */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ circ_client_machine.states[CIRCPAD_STATE_BURST].start_usec = 100;
+ mi->padding_scheduled_at_usec = current_time - 29202;
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[BIG_HISTOGRAM_LEN-2], OP_EQ, 1);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+/** Test closest token removal strategy with usec */
+static void
+test_circuitpadding_token_removal_exact(void *arg)
+{
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /* Mock it up */
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ /* Setup test environment (time etc.) */
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ monotime_enable_test_mocking();
+
+ /* Create test machine */
+ helper_create_machine_with_big_histogram(CIRCPAD_TOKEN_REMOVAL_EXACT);
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+
+ /* move the machine to the right state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ /* Get the machine and setup tokens */
+ mi = client_side->padding_info[0];
+ tt_assert(mi);
+
+ /**********************************************************************/
+ uint64_t current_time = monotime_absolute_usec();
+
+ /* Ensure that we will clear out bin #4 with this usec */
+ mi->padding_scheduled_at_usec = current_time - 57;
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+ circpad_machine_remove_token(mi);
+ mi->padding_scheduled_at_usec = current_time - 57;
+ tt_int_op(mi->histogram[4], OP_EQ, 1);
+ circpad_machine_remove_token(mi);
+ tt_int_op(mi->histogram[4], OP_EQ, 0);
+
+ /* Ensure that we will not remove any other tokens even tho we try to, since
+ * this is what the exact strategy dictates */
+ mi->padding_scheduled_at_usec = current_time - 57;
+ circpad_machine_remove_token(mi);
+ for (int i = 0; i < BIG_HISTOGRAM_LEN ; i++) {
+ if (i != 4) {
+ tt_int_op(mi->histogram[i], OP_EQ, 2);
+ }
+ }
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+#undef BIG_HISTOGRAM_LEN
+
+void
+test_circuitpadding_tokens(void *arg)
+{
+ const circpad_state_t *state;
+ circpad_machine_state_t *mi;
+ (void)arg;
+
+ /** Test plan:
+ *
+ * 1. Test symmetry between bin_to_usec and usec_to_bin
+ * a. Test conversion
+ * b. Test edge transitions (lower, upper)
+ * 2. Test remove higher on an empty bin
+ * a. Normal bin
+ * b. Infinity bin
+ * c. Bin 0
+ * d. No higher
+ * 3. Test remove lower
+ * a. Normal bin
+ * b. Bin 0
+ * c. No lower
+ * 4. Test remove closest
+ * a. Closest lower
+ * b. Closest higher
+ * c. Closest 0
+ * d. Closest Infinity
+ */
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+
+ helper_create_basic_machine();
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] = circpad_circuit_machineinfo_new(client_side,
+ 0);
+
+ mi = client_side->padding_info[0];
+
+ // Pretend a non-padding cell was sent
+ // XXX: This messes us up.. Padding gets scheduled..
+ circpad_cell_event_nonpadding_sent((circuit_t*)client_side);
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ /* We have to save the infinity bin because one inf delay
+ * could have been chosen when we transition to burst */
+ circpad_hist_token_t inf_bin = mi->histogram[4];
+
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ state = circpad_machine_current_state(client_side->padding_info[0]);
+
+ // Test 0: convert bin->usec->bin
+ // Bin 0+1 have different semantics
+ for (int bin = 0; bin < 2; bin++) {
+ circpad_delay_t usec =
+ circpad_histogram_bin_to_usec(client_side->padding_info[0], bin);
+ int bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec);
+ tt_int_op(bin, OP_EQ, bin2);
+ }
+ for (int bin = 2; bin < state->histogram_len-1; bin++) {
+ circpad_delay_t usec =
+ circpad_histogram_bin_to_usec(client_side->padding_info[0], bin);
+ int bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec);
+ tt_int_op(bin, OP_EQ, bin2);
+ /* Verify we round down */
+ bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec+3);
+ tt_int_op(bin, OP_EQ, bin2);
+
+ bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec-1);
+ tt_int_op(bin, OP_EQ, bin2+1);
+ }
+
+ // Test 1: converting usec->bin->usec->bin
+ // Bin 0+1 have different semantics.
+ for (circpad_delay_t i = 0; i <= state->start_usec+1; i++) {
+ int bin = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ i);
+ circpad_delay_t usec =
+ circpad_histogram_bin_to_usec(client_side->padding_info[0], bin);
+ int bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec);
+ tt_int_op(bin, OP_EQ, bin2);
+ tt_int_op(i, OP_LE, usec);
+ }
+ for (circpad_delay_t i = state->start_usec+1;
+ i <= state->start_usec + state->range_usec; i++) {
+ int bin = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ i);
+ circpad_delay_t usec =
+ circpad_histogram_bin_to_usec(client_side->padding_info[0], bin);
+ int bin2 = circpad_histogram_usec_to_bin(client_side->padding_info[0],
+ usec);
+ tt_int_op(bin, OP_EQ, bin2);
+ tt_int_op(i, OP_GE, usec);
+ }
+
+ /* 2.a. Normal higher bin */
+ {
+ tt_int_op(mi->histogram[2], OP_EQ, 2);
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ tt_int_op(mi->histogram[2], OP_EQ, 1);
+
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ tt_int_op(mi->histogram[2], OP_EQ, 0);
+
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ tt_int_op(mi->histogram[3], OP_EQ, 0);
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ tt_int_op(mi->histogram[3], OP_EQ, 0);
+ }
+
+ /* 2.b. Higher Infinity bin */
+ {
+ tt_int_op(mi->histogram[4], OP_EQ, inf_bin);
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1);
+ tt_int_op(mi->histogram[4], OP_EQ, inf_bin);
+
+ /* Test past the infinity bin */
+ circpad_machine_remove_higher_token(mi,
+ circpad_histogram_bin_to_usec(mi, 5)+1000000);
+
+ tt_int_op(mi->histogram[4], OP_EQ, inf_bin);
+ }
+
+ /* 2.c. Bin 0 */
+ {
+ tt_int_op(mi->histogram[0], OP_EQ, 1);
+ circpad_machine_remove_higher_token(mi,
+ state->start_usec/2);
+ tt_int_op(mi->histogram[0], OP_EQ, 0);
+ }
+
+ /* Drain the infinity bin and cause a refill */
+ while (inf_bin != 0) {
+ tt_int_op(mi->histogram[4], OP_EQ, inf_bin);
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ inf_bin--;
+ }
+
+ circpad_cell_event_nonpadding_sent((circuit_t*)client_side);
+
+ // We should have refilled here.
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+
+ /* 3.a. Bin 0 */
+ {
+ tt_int_op(mi->histogram[0], OP_EQ, 1);
+ circpad_machine_remove_higher_token(mi,
+ state->start_usec/2);
+ tt_int_op(mi->histogram[0], OP_EQ, 0);
+ }
+
+ /* 3.b. Test remove lower normal bin */
+ {
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ circpad_machine_remove_lower_token(mi,
+ circpad_histogram_bin_to_usec(mi, 3)+1);
+ circpad_machine_remove_lower_token(mi,
+ circpad_histogram_bin_to_usec(mi, 3)+1);
+ tt_int_op(mi->histogram[3], OP_EQ, 0);
+ tt_int_op(mi->histogram[2], OP_EQ, 2);
+ circpad_machine_remove_lower_token(mi,
+ circpad_histogram_bin_to_usec(mi, 3)+1);
+ circpad_machine_remove_lower_token(mi,
+ circpad_histogram_bin_to_usec(mi, 3)+1);
+ /* 3.c. No lower */
+ circpad_machine_remove_lower_token(mi,
+ circpad_histogram_bin_to_usec(mi, 3)+1);
+ tt_int_op(mi->histogram[2], OP_EQ, 0);
+ }
+
+ /* 4. Test remove closest
+ * a. Closest lower
+ * b. Closest higher
+ * c. Closest 0
+ * d. Closest Infinity
+ */
+ circpad_machine_setup_tokens(mi);
+ tt_int_op(mi->histogram[2], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ tt_int_op(mi->histogram[2], OP_EQ, 0);
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ tt_int_op(mi->histogram[3], OP_EQ, 0);
+ tt_int_op(mi->histogram[0], OP_EQ, 1);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ tt_int_op(mi->histogram[0], OP_EQ, 0);
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 2)+1, 0);
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+
+ /* 5. Test remove closest usec
+ * a. Closest 0
+ * b. Closest lower (below midpoint)
+ * c. Closest higher (above midpoint)
+ * d. Closest Infinity
+ */
+ circpad_machine_setup_tokens(mi);
+
+ tt_int_op(mi->histogram[0], OP_EQ, 1);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 0)/3, 1);
+ tt_int_op(mi->histogram[0], OP_EQ, 0);
+ tt_int_op(mi->histogram[2], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 0)/3, 1);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 0)/3, 1);
+ tt_int_op(mi->histogram[2], OP_EQ, 0);
+ tt_int_op(mi->histogram[3], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 4), 1);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 4), 1);
+ tt_int_op(mi->histogram[3], OP_EQ, 0);
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 4), 1);
+ circpad_machine_remove_closest_token(mi,
+ circpad_histogram_bin_to_usec(mi, 4), 1);
+ tt_int_op(mi->histogram[4], OP_EQ, 2);
+
+ // XXX: Need more coverage of the actual usec branches
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ monotime_disable_test_mocking();
+ tor_free(circ_client_machine.states);
+}
+
+void
+test_circuitpadding_wronghop(void *arg)
+{
+ /**
+ * Test plan:
+ * 1. Padding sent from hop 1 and 3 to client
+ * 2. Send negotiated from hop 1 and 3 to client
+ * 3. Garbled negotiated cell
+ * 4. Padding negotiate sent to client
+ * 5. Send negotiate stop command for unknown machine
+ * 6. Send negotiated to relay
+ * 7. Garbled padding negotiate cell
+ */
+ (void)arg;
+ uint32_t read_bw = 0, overhead_bw = 0;
+ cell_t cell;
+ signed_error_t ret;
+ origin_circuit_t *orig_client;
+
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+
+ /* Mock this function so that our cell counting tests don't get confused by
+ * padding that gets sent by scheduled timers. */
+ MOCK(circpad_machine_schedule_padding,circpad_machine_schedule_padding_mock);
+
+ client_side = (circuit_t *)origin_circuit_new();
+ dummy_channel.cmux = circuitmux_alloc();
+ relay_side = (circuit_t *)new_fake_orcirc(&dummy_channel,
+ &dummy_channel);
+ orig_client = TO_ORIGIN_CIRCUIT(client_side);
+
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ nodes_init();
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+ circpad_machines_init();
+
+ MOCK(node_get_by_id,
+ node_get_by_id_mock);
+
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+
+ /* Build three hops */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* verify padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_NE, NULL);
+ tt_ptr_op(relay_side->padding_info[0], OP_NE, NULL);
+
+ /* verify echo was sent */
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ read_bw = orig_client->n_delivered_read_circ_bw;
+ overhead_bw = orig_client->n_overhead_read_circ_bw;
+
+ /* 1. Test padding from first and third hop */
+ circpad_deliver_recognized_relay_cell_events(client_side,
+ RELAY_COMMAND_DROP,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath);
+ tt_int_op(read_bw, OP_EQ,
+ orig_client->n_delivered_read_circ_bw);
+ tt_int_op(overhead_bw, OP_EQ,
+ orig_client->n_overhead_read_circ_bw);
+
+ circpad_deliver_recognized_relay_cell_events(client_side,
+ RELAY_COMMAND_DROP,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next->next);
+ tt_int_op(read_bw, OP_EQ,
+ orig_client->n_delivered_read_circ_bw);
+ tt_int_op(overhead_bw, OP_EQ,
+ orig_client->n_overhead_read_circ_bw);
+
+ circpad_deliver_recognized_relay_cell_events(client_side,
+ RELAY_COMMAND_DROP,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next);
+ tt_int_op(read_bw, OP_EQ,
+ orig_client->n_delivered_read_circ_bw);
+ tt_int_op(overhead_bw, OP_LT,
+ orig_client->n_overhead_read_circ_bw);
+
+ /* 2. Test padding negotiated not handled from hops 1,3 */
+ ret = circpad_handle_padding_negotiated(client_side, &cell,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath);
+ tt_int_op(ret, OP_EQ, -1);
+
+ ret = circpad_handle_padding_negotiated(client_side, &cell,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next->next);
+ tt_int_op(ret, OP_EQ, -1);
+
+ /* 3. Garbled negotiated cell */
+ memset(&cell, 255, sizeof(cell));
+ ret = circpad_handle_padding_negotiated(client_side, &cell,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next);
+ tt_int_op(ret, OP_EQ, -1);
+
+ /* 4. Test that negotiate is dropped at origin */
+ read_bw = orig_client->n_delivered_read_circ_bw;
+ overhead_bw = orig_client->n_overhead_read_circ_bw;
+ relay_send_command_from_edge(0, relay_side,
+ RELAY_COMMAND_PADDING_NEGOTIATE,
+ (void*)cell.payload,
+ (size_t)3, NULL);
+ tt_int_op(read_bw, OP_EQ,
+ orig_client->n_delivered_read_circ_bw);
+ tt_int_op(overhead_bw, OP_EQ,
+ orig_client->n_overhead_read_circ_bw);
+
+ tt_int_op(n_relay_cells, OP_EQ, 2);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ /* 5. Test that asking to stop the wrong machine does nothing */
+ circpad_negotiate_padding(TO_ORIGIN_CIRCUIT(client_side),
+ 255, 2, CIRCPAD_COMMAND_STOP);
+ tt_ptr_op(client_side->padding_machine[0], OP_NE, NULL);
+ tt_ptr_op(client_side->padding_info[0], OP_NE, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_NE, NULL);
+ tt_ptr_op(relay_side->padding_info[0], OP_NE, NULL);
+ tt_int_op(n_relay_cells, OP_EQ, 3);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+
+ /* 6. Sending negotiated command to relay does nothing */
+ ret = circpad_handle_padding_negotiated(relay_side, &cell, NULL);
+ tt_int_op(ret, OP_EQ, -1);
+
+ /* 7. Test garbled negotated cell (bad command 255) */
+ memset(&cell, 0, sizeof(cell));
+ ret = circpad_handle_padding_negotiate(relay_side, &cell);
+ tt_int_op(ret, OP_EQ, -1);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+
+ /* Test 2: Test no padding */
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ free_fake_orcirc(relay_side);
+
+ client_side = (circuit_t *)origin_circuit_new();
+ relay_side = (circuit_t *)new_fake_orcirc(&dummy_channel,
+ &dummy_channel);
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 0);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+ tt_int_op(n_relay_cells, OP_EQ, 3);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+
+ /* verify no echo was sent */
+ tt_int_op(n_relay_cells, OP_EQ, 3);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+
+ /* Finish circuit */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* Spoof padding negotiated on circuit with no padding */
+ circpad_padding_negotiated(relay_side,
+ CIRCPAD_MACHINE_CIRC_SETUP,
+ CIRCPAD_COMMAND_START,
+ CIRCPAD_RESPONSE_OK);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ circpad_padding_negotiated(relay_side,
+ CIRCPAD_MACHINE_CIRC_SETUP,
+ CIRCPAD_COMMAND_START,
+ CIRCPAD_RESPONSE_ERR);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ free_fake_orcirc(relay_side);
+ circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
+ circuitmux_free(dummy_channel.cmux);
+ monotime_disable_test_mocking();
+ UNMOCK(node_get_by_id);
+ UNMOCK(circuit_package_relay_cell);
+ UNMOCK(circuitmux_attach_circuit);
+ nodes_free();
+}
+
+void
+test_circuitpadding_negotiation(void *arg)
+{
+ /**
+ * Test plan:
+ * 1. Test circuit where padding is supported by middle
+ * a. Make sure padding negotiation is sent
+ * b. Test padding negotiation delivery and parsing
+ * 2. Test circuit where padding is unsupported by middle
+ * a. Make sure padding negotiation is not sent
+ * 3. Test failure to negotiate a machine due to desync.
+ */
+ (void)arg;
+
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ dummy_channel.cmux = circuitmux_alloc();
+ relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
+
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ nodes_init();
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+ circpad_machines_init();
+
+ MOCK(node_get_by_id,
+ node_get_by_id_mock);
+
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+
+ /* Build two hops */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* verify padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_NE, NULL);
+ tt_ptr_op(relay_side->padding_info[0], OP_NE, NULL);
+
+ /* verify echo was sent */
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ /* Finish circuit */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* Test 2: Test no padding */
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ free_fake_orcirc(relay_side);
+
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 0);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ /* verify no echo was sent */
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ /* Finish circuit */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* Force negotiate padding. */
+ circpad_negotiate_padding(TO_ORIGIN_CIRCUIT(client_side),
+ CIRCPAD_MACHINE_CIRC_SETUP,
+ 2, CIRCPAD_COMMAND_START);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ /* verify no echo was sent */
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(n_client_cells, OP_EQ, 1);
+
+ /* 3. Test failure to negotiate a machine due to desync */
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ free_fake_orcirc(relay_side);
+
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ SMARTLIST_FOREACH(relay_padding_machines,
+ circpad_machine_spec_t *,
+ m, tor_free(m->states); tor_free(m));
+ smartlist_free(relay_padding_machines);
+ relay_padding_machines = smartlist_new();
+
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* verify echo was sent */
+ tt_int_op(n_client_cells, OP_EQ, 2);
+ tt_int_op(n_relay_cells, OP_EQ, 2);
+
+ /* verify no padding was negotiated */
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ free_fake_orcirc(relay_side);
+ circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
+ circuitmux_free(dummy_channel.cmux);
+ monotime_disable_test_mocking();
+ UNMOCK(node_get_by_id);
+ UNMOCK(circuit_package_relay_cell);
+ UNMOCK(circuitmux_attach_circuit);
+ nodes_free();
+}
+
+static void
+simulate_single_hop_extend(circuit_t *client, circuit_t *mid_relay,
+ int padding)
+{
+ char whatevs_key[CPATH_KEY_MATERIAL_LEN];
+ char digest[DIGEST_LEN];
+ tor_addr_t addr;
+
+ // Pretend a non-padding cell was sent
+ circpad_cell_event_nonpadding_sent((circuit_t*)client);
+
+ // Receive extend cell at middle
+ circpad_cell_event_nonpadding_received((circuit_t*)mid_relay);
+
+ // Advance time a tiny bit so we can calculate an RTT
+ curr_mocked_time += 10 * TOR_NSEC_PER_MSEC;
+ monotime_coarse_set_mock_time_nsec(curr_mocked_time);
+ monotime_set_mock_time_nsec(curr_mocked_time);
+
+ // Receive extended cell at middle
+ circpad_cell_event_nonpadding_sent((circuit_t*)mid_relay);
+
+ // Receive extended cell at first hop
+ circpad_cell_event_nonpadding_received((circuit_t*)client);
+
+ // Add a hop to cpath
+ crypt_path_t *hop = tor_malloc_zero(sizeof(crypt_path_t));
+ onion_append_to_cpath(&TO_ORIGIN_CIRCUIT(client)->cpath, hop);
+
+ hop->magic = CRYPT_PATH_MAGIC;
+ hop->state = CPATH_STATE_OPEN;
+
+ // add an extend info to indicate if this node supports padding or not.
+ // (set the first byte of the digest for our mocked node_get_by_id)
+ digest[0] = padding;
+
+ hop->extend_info = extend_info_new(
+ padding ? "padding" : "non-padding",
+ digest, NULL, NULL, NULL,
+ &addr, padding);
+
+ circuit_init_cpath_crypto(hop, whatevs_key, sizeof(whatevs_key), 0, 0);
+
+ hop->package_window = circuit_initial_package_window();
+ hop->deliver_window = CIRCWINDOW_START;
+
+ // Signal that the hop was added
+ circpad_machine_event_circ_added_hop(TO_ORIGIN_CIRCUIT(client));
+}
+
+static circpad_machine_spec_t *
+helper_create_conditional_machine(void)
+{
+ circpad_machine_spec_t *ret =
+ tor_malloc_zero(sizeof(circpad_machine_spec_t));
+
+ /* Start, burst */
+ circpad_machine_states_init(ret, 2);
+
+ ret->states[CIRCPAD_STATE_START].
+ next_state[CIRCPAD_EVENT_PADDING_SENT] = CIRCPAD_STATE_BURST;
+
+ ret->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_PADDING_SENT] = CIRCPAD_STATE_BURST;
+
+ ret->states[CIRCPAD_STATE_BURST].
+ next_state[CIRCPAD_EVENT_LENGTH_COUNT] = CIRCPAD_STATE_END;
+
+ ret->states[CIRCPAD_STATE_BURST].token_removal =
+ CIRCPAD_TOKEN_REMOVAL_NONE;
+
+ ret->states[CIRCPAD_STATE_BURST].histogram_len = 3;
+ ret->states[CIRCPAD_STATE_BURST].start_usec = 0;
+ ret->states[CIRCPAD_STATE_BURST].range_usec = 1000000;
+ ret->states[CIRCPAD_STATE_BURST].histogram[0] = 6;
+ ret->states[CIRCPAD_STATE_BURST].histogram[1] = 0;
+ ret->states[CIRCPAD_STATE_BURST].histogram[1] = 0;
+ ret->states[CIRCPAD_STATE_BURST].histogram_total_tokens = 6;
+ ret->states[CIRCPAD_STATE_BURST].use_rtt_estimate = 0;
+ ret->states[CIRCPAD_STATE_BURST].length_includes_nonpadding = 1;
+
+ return ret;
+}
+
+static void
+helper_create_conditional_machines(void)
+{
+ circpad_machine_spec_t *add = helper_create_conditional_machine();
+ origin_padding_machines = smartlist_new();
+ relay_padding_machines = smartlist_new();
+
+ add->machine_num = 2;
+ add->is_origin_side = 1;
+ add->should_negotiate_end = 1;
+ add->target_hopnum = 2;
+
+ /* Let's have this one end after 4 packets */
+ add->states[CIRCPAD_STATE_BURST].length_dist.type = CIRCPAD_DIST_UNIFORM;
+ add->states[CIRCPAD_STATE_BURST].length_dist.param1 = 4;
+ add->states[CIRCPAD_STATE_BURST].length_dist.param2 = 4;
+ add->states[CIRCPAD_STATE_BURST].max_length = 4;
+
+ add->conditions.requires_vanguards = 0;
+ add->conditions.min_hops = 2;
+ add->conditions.state_mask = CIRCPAD_CIRC_BUILDING|
+ CIRCPAD_CIRC_NO_STREAMS|CIRCPAD_CIRC_HAS_RELAY_EARLY;
+ add->conditions.purpose_mask = CIRCPAD_PURPOSE_ALL;
+
+ smartlist_add(origin_padding_machines, add);
+
+ add = helper_create_conditional_machine();
+ add->machine_num = 3;
+ add->is_origin_side = 1;
+ add->should_negotiate_end = 1;
+ add->target_hopnum = 2;
+
+ /* Let's have this one end after 4 packets */
+ add->states[CIRCPAD_STATE_BURST].length_dist.type = CIRCPAD_DIST_UNIFORM;
+ add->states[CIRCPAD_STATE_BURST].length_dist.param1 = 4;
+ add->states[CIRCPAD_STATE_BURST].length_dist.param2 = 4;
+ add->states[CIRCPAD_STATE_BURST].max_length = 4;
+
+ add->conditions.requires_vanguards = 1;
+ add->conditions.min_hops = 3;
+ add->conditions.state_mask = CIRCPAD_CIRC_OPENED|
+ CIRCPAD_CIRC_STREAMS|CIRCPAD_CIRC_HAS_NO_RELAY_EARLY;
+ add->conditions.purpose_mask = CIRCPAD_PURPOSE_ALL;
+ smartlist_add(origin_padding_machines, add);
+
+ add = helper_create_conditional_machine();
+ add->machine_num = 2;
+ smartlist_add(relay_padding_machines, add);
+
+ add = helper_create_conditional_machine();
+ add->machine_num = 3;
+ smartlist_add(relay_padding_machines, add);
+}
+
+void
+test_circuitpadding_conditions(void *arg)
+{
+ /**
+ * Test plan:
+ * 0. Make a few origin and client machines with diff conditions
+ * * vanguards, purposes, has_opened circs, no relay early
+ * * Client side should_negotiate_end
+ * * Length limits
+ * 1. Test STATE_END transitions
+ * 2. Test new machine after end with same conditions
+ * 3. Test new machine due to changed conditions
+ * * Esp: built event, no relay early, no streams
+ * XXX: Diff test:
+ * 1. Test STATE_END with pending timers
+ * 2. Test marking a circuit before padding callback fires
+ * 3. Test freeing a circuit before padding callback fires
+ */
+ (void)arg;
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+
+ nodes_init();
+ dummy_channel.cmux = circuitmux_alloc();
+ relay_side = (circuit_t *)new_fake_orcirc(&dummy_channel,
+ &dummy_channel);
+ client_side = (circuit_t *)origin_circuit_new();
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+ helper_create_conditional_machines();
+
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+ MOCK(node_get_by_id,
+ node_get_by_id_mock);
+
+ /* Simulate extend. This should result in the original machine getting
+ * added, since the circuit is not built */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* Verify that machine #2 is added */
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 2);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 2);
+
+ /* Deliver a padding cell to the client, to trigger burst state */
+ circpad_cell_event_padding_sent(client_side);
+
+ /* This should have trigger length shutdown condition on client.. */
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ /* Verify machine is gone from both sides */
+ tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+
+ /* Send another event.. verify machine gets re-added properly
+ * (test race with shutdown) */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 2);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 2);
+
+ TO_ORIGIN_CIRCUIT(client_side)->p_streams = 0;
+ circpad_machine_event_circ_has_no_streams(TO_ORIGIN_CIRCUIT(client_side));
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 2);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 2);
+
+ /* Now make the circuit opened and send built event */
+ TO_ORIGIN_CIRCUIT(client_side)->has_opened = 1;
+ circpad_machine_event_circ_built(TO_ORIGIN_CIRCUIT(client_side));
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 2);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 2);
+
+ TO_ORIGIN_CIRCUIT(client_side)->remaining_relay_early_cells = 0;
+ circpad_machine_event_circ_has_no_relay_early(
+ TO_ORIGIN_CIRCUIT(client_side));
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 2);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 2);
+
+ get_options_mutable()->HSLayer2Nodes = (void*)1;
+ TO_ORIGIN_CIRCUIT(client_side)->p_streams = (void*)1;
+ circpad_machine_event_circ_has_streams(TO_ORIGIN_CIRCUIT(client_side));
+
+ /* Verify different machine is added */
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 3);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 3);
+
+ /* Hold off on negotiated */
+ deliver_negotiated = 0;
+
+ /* Deliver a padding cell to the client, to trigger burst state */
+ circpad_cell_event_padding_sent(client_side);
+
+ /* This should have trigger length shutdown condition on client
+ * but not the response for the padding machine */
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_NE, NULL);
+
+ /* Verify machine is gone from the relay (but negotiated not back yet */
+ tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+
+ /* Add another hop and verify it's back */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ tt_int_op(client_side->padding_machine[0]->machine_num, OP_EQ, 3);
+ tt_int_op(relay_side->padding_machine[0]->machine_num, OP_EQ, 3);
+
+ tt_ptr_op(client_side->padding_info[0], OP_NE, NULL);
+ tt_ptr_op(relay_side->padding_info[0], OP_NE, NULL);
+
+ done:
+ /* XXX: Free everything */
+ return;
+}
+
+/** Disabled unstable test until #29298 is implemented (see #29122) */
+#if 0
+void
+test_circuitpadding_circuitsetup_machine(void *arg)
+{
+ /**
+ * Test case plan:
+ *
+ * 1. Simulate a normal circuit setup pattern
+ * a. Application traffic
+ *
+ * FIXME: This should focus more on exercising the machine
+ * features rather than actual traffic patterns. For example,
+ * test cancellation and bins empty/refill
+ */
+ (void)arg;
+
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+
+ dummy_channel.cmux = circuitmux_alloc();
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ relay_side = TO_CIRCUIT(new_fake_orcirc(&dummy_channel, &dummy_channel));
+
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+
+ nodes_init();
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+
+ timers_initialize();
+ circpad_machines_init();
+
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+ MOCK(node_get_by_id,
+ node_get_by_id_mock);
+
+ /* Test case #1: Build a 3 hop circuit, then wait and let pad */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ tt_int_op(n_client_cells, OP_EQ, 1);
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_int_op(relay_side->padding_info[0]->is_padding_timer_scheduled,
+ OP_EQ, 0);
+ timers_advance_and_run(2000);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+ tt_int_op(n_relay_cells, OP_EQ, 1);
+
+ tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_GAP);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ timers_advance_and_run(5000);
+ tt_int_op(n_client_cells, OP_EQ, 2);
+ tt_int_op(n_relay_cells, OP_EQ, 2);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ timers_advance_and_run(2000);
+ tt_int_op(n_client_cells, OP_EQ, 3);
+ tt_int_op(n_relay_cells, OP_EQ, 2);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ timers_advance_and_run(5000);
+ tt_int_op(n_client_cells, OP_EQ, 3);
+ tt_int_op(n_relay_cells, OP_EQ, 3);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ timers_advance_and_run(2000);
+ tt_int_op(n_client_cells, OP_EQ, 4);
+ tt_int_op(n_relay_cells, OP_EQ, 3);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ timers_advance_and_run(5000);
+ tt_int_op(n_client_cells, OP_EQ, 4);
+ tt_int_op(n_relay_cells, OP_EQ, 4);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ timers_advance_and_run(2000);
+ tt_int_op(n_client_cells, OP_EQ, 5);
+ tt_int_op(n_relay_cells, OP_EQ, 4);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ timers_advance_and_run(5000);
+ tt_int_op(n_client_cells, OP_EQ, 5);
+ tt_int_op(n_relay_cells, OP_EQ, 5);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ timers_advance_and_run(2000);
+ tt_int_op(n_client_cells, OP_EQ, 6);
+ tt_int_op(n_relay_cells, OP_EQ, 5);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ timers_advance_and_run(5000);
+ tt_int_op(n_client_cells, OP_EQ, 6);
+ tt_int_op(n_relay_cells, OP_EQ, 6);
+
+ tt_int_op(client_side->padding_info[0]->current_state,
+ OP_EQ, CIRCPAD_STATE_END);
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ tt_int_op(relay_side->padding_info[0]->current_state,
+ OP_EQ, CIRCPAD_STATE_GAP);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+
+ /* Verify we can't schedule padding in END state */
+ circpad_decision_t ret =
+ circpad_machine_schedule_padding(client_side->padding_info[0]);
+ tt_int_op(ret, OP_EQ, CIRCPAD_STATE_UNCHANGED);
+
+ /* Simulate application traffic */
+ circpad_cell_event_nonpadding_sent(client_side);
+ circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_OUT);
+ circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_IN);
+ circpad_deliver_recognized_relay_cell_events(client_side, RELAY_COMMAND_DATA,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next);
+
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+ tt_int_op(n_client_cells, OP_EQ, 6);
+ tt_int_op(n_relay_cells, OP_EQ, 7);
+
+ // Test timer cancellation
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ timers_advance_and_run(5000);
+ circpad_cell_event_padding_received(client_side);
+
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_GAP);
+
+ tt_int_op(n_client_cells, OP_EQ, 8);
+ tt_int_op(n_relay_cells, OP_EQ, 8);
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+
+ /* Test timer cancel due to state rules */
+ circpad_cell_event_nonpadding_sent(client_side);
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_EQ, 0);
+ circpad_cell_event_padding_received(client_side);
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+
+ /* Simulate application traffic to cancel timer */
+ circpad_cell_event_nonpadding_sent(client_side);
+ circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_OUT);
+ circpad_deliver_unrecognized_cell_events(relay_side, CELL_DIRECTION_IN);
+ circpad_deliver_recognized_relay_cell_events(client_side, RELAY_COMMAND_DATA,
+ TO_ORIGIN_CIRCUIT(client_side)->cpath->next);
+
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(client_side->padding_machine[0], OP_EQ, NULL);
+
+ tt_ptr_op(relay_side->padding_info[0], OP_EQ, NULL);
+ tt_ptr_op(relay_side->padding_machine[0], OP_EQ, NULL);
+
+ /* No cells sent, except negotiate end from relay */
+ tt_int_op(n_client_cells, OP_EQ, 8);
+ tt_int_op(n_relay_cells, OP_EQ, 9);
+
+ /* Test mark for close and free */
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ timers_advance_and_run(5000);
+ circpad_cell_event_padding_received(client_side);
+
+ tt_int_op(n_client_cells, OP_EQ, 10);
+ tt_int_op(n_relay_cells, OP_EQ, 10);
+
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_BURST);
+ tt_int_op(relay_side->padding_info[0]->current_state, OP_EQ,
+ CIRCPAD_STATE_GAP);
+
+ tt_u64_op(client_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ tt_u64_op(relay_side->padding_info[0]->padding_scheduled_at_usec,
+ OP_NE, 0);
+ circuit_mark_for_close(client_side, END_CIRC_REASON_FLAG_REMOTE);
+ free_fake_orcirc(relay_side);
+ timers_advance_and_run(5000);
+
+ /* No cells sent */
+ tt_int_op(n_client_cells, OP_EQ, 10);
+ tt_int_op(n_relay_cells, OP_EQ, 10);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+
+ circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
+ circuitmux_free(dummy_channel.cmux);
+ timers_shutdown();
+ monotime_disable_test_mocking();
+ UNMOCK(circuit_package_relay_cell);
+ UNMOCK(circuitmux_attach_circuit);
+
+ return;
+}
+#endif
+
+/** Helper function: Initializes a padding machine where every state uses the
+ * uniform probability distribution. */
+static void
+helper_circpad_circ_distribution_machine_setup(int min, int max)
+{
+ circpad_machine_states_init(&circ_client_machine, 7);
+
+ circpad_state_t *zero_st = &circ_client_machine.states[0];
+ zero_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 1;
+ zero_st->iat_dist.type = CIRCPAD_DIST_UNIFORM;
+ zero_st->iat_dist.param1 = min;
+ zero_st->iat_dist.param2 = max;
+ zero_st->start_usec = min;
+ zero_st->range_usec = max;
+
+ circpad_state_t *first_st = &circ_client_machine.states[1];
+ first_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 2;
+ first_st->iat_dist.type = CIRCPAD_DIST_LOGISTIC;
+ first_st->iat_dist.param1 = min;
+ first_st->iat_dist.param2 = max;
+ first_st->start_usec = min;
+ first_st->range_usec = max;
+
+ circpad_state_t *second_st = &circ_client_machine.states[2];
+ second_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 3;
+ second_st->iat_dist.type = CIRCPAD_DIST_LOG_LOGISTIC;
+ second_st->iat_dist.param1 = min;
+ second_st->iat_dist.param2 = max;
+ second_st->start_usec = min;
+ second_st->range_usec = max;
+
+ circpad_state_t *third_st = &circ_client_machine.states[3];
+ third_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 4;
+ third_st->iat_dist.type = CIRCPAD_DIST_GEOMETRIC;
+ third_st->iat_dist.param1 = min;
+ third_st->iat_dist.param2 = max;
+ third_st->start_usec = min;
+ third_st->range_usec = max;
+
+ circpad_state_t *fourth_st = &circ_client_machine.states[4];
+ fourth_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 5;
+ fourth_st->iat_dist.type = CIRCPAD_DIST_WEIBULL;
+ fourth_st->iat_dist.param1 = min;
+ fourth_st->iat_dist.param2 = max;
+ fourth_st->start_usec = min;
+ fourth_st->range_usec = max;
+
+ circpad_state_t *fifth_st = &circ_client_machine.states[5];
+ fifth_st->next_state[CIRCPAD_EVENT_NONPADDING_RECV] = 6;
+ fifth_st->iat_dist.type = CIRCPAD_DIST_PARETO;
+ fifth_st->iat_dist.param1 = min;
+ fifth_st->iat_dist.param2 = max;
+ fifth_st->start_usec = min;
+ fifth_st->range_usec = max;
+}
+
+/** Simple test that the padding delays sampled from a uniform distribution
+ * actually faill within the uniform distribution range. */
+/* TODO: Upgrade this test so that each state tests a different prob
+ * distribution */
+static void
+test_circuitpadding_sample_distribution(void *arg)
+{
+ circpad_machine_state_t *mi;
+ int n_samples;
+ int n_states;
+
+ (void) arg;
+
+ /* mock this function so that we dont actually schedule any padding */
+ MOCK(circpad_machine_schedule_padding,
+ circpad_machine_schedule_padding_mock);
+
+ /* Initialize a machine with multiple probability distributions that should
+ * return values between 0 and 5 */
+ circpad_machines_init();
+ helper_circpad_circ_distribution_machine_setup(0, 10);
+
+ /* Initialize machine and circuits */
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+ mi = client_side->padding_info[0];
+
+ /* For every state, sample a bunch of values from the distribution and ensure
+ * they fall within range. */
+ for (n_states = 0 ; n_states < 6; n_states++) {
+ /* Make sure we in the right state */
+ tt_int_op(client_side->padding_info[0]->current_state, OP_EQ, n_states);
+
+ for (n_samples = 0; n_samples < 100; n_samples++) {
+ circpad_delay_t delay = circpad_machine_sample_delay(mi);
+ tt_int_op(delay, OP_GE, 0);
+ tt_int_op(delay, OP_LE, 10);
+ }
+
+ /* send a non-padding cell to move to the next machine state */
+ circpad_cell_event_nonpadding_received((circuit_t*)client_side);
+ }
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+ UNMOCK(circpad_machine_schedule_padding);
+}
+
+static circpad_decision_t
+circpad_machine_spec_transition_mock(circpad_machine_state_t *mi,
+ circpad_event_t event)
+{
+ (void) mi;
+ (void) event;
+
+ return CIRCPAD_STATE_UNCHANGED;
+}
+
+/* Test per-machine padding rate limits */
+static void
+test_circuitpadding_machine_rate_limiting(void *arg)
+{
+ (void) arg;
+ bool retval;
+ circpad_machine_state_t *mi;
+ int i;
+
+ /* Ignore machine transitions for the purposes of this function, we only
+ * really care about padding counts */
+ MOCK(circpad_machine_spec_transition, circpad_machine_spec_transition_mock);
+ MOCK(circpad_send_command_to_hop, circpad_send_command_to_hop_mock);
+
+ /* Setup machine and circuits */
+ client_side = TO_CIRCUIT(origin_circuit_new());
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ helper_create_basic_machine();
+ client_side->padding_machine[0] = &circ_client_machine;
+ client_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(client_side, 0);
+ mi = client_side->padding_info[0];
+ /* Set up the machine info so that we can get through the basic functions */
+ mi->state_length = CIRCPAD_STATE_LENGTH_INFINITE;
+
+ /* First we are going to test the per-machine rate limits */
+ circ_client_machine.max_padding_percent = 50;
+ circ_client_machine.allowed_padding_count = 100;
+
+ /* Check padding limit, should be fine since we haven't sent anything yet. */
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 0);
+
+ /* Send 99 padding cells which is below circpad_global_allowed_cells=100, so
+ * the rate limit will not trigger */
+ for (i=0;i<99;i++) {
+ circpad_send_padding_cell_for_callback(mi);
+ }
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 0);
+
+ /* Now send another padding cell to pass circpad_global_allowed_cells=100,
+ and see that the limit will trigger */
+ circpad_send_padding_cell_for_callback(mi);
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 1);
+
+ retval = circpad_machine_schedule_padding(mi);
+ tt_int_op(retval, OP_EQ, CIRCPAD_STATE_UNCHANGED);
+
+ /* Cover wrap */
+ for (;i<UINT16_MAX;i++) {
+ circpad_send_padding_cell_for_callback(mi);
+ }
+ tt_int_op(mi->padding_sent, OP_EQ, UINT16_MAX/2+1);
+
+ tt_ptr_op(client_side->padding_info[0], OP_EQ, mi);
+ for (i=0;i<UINT16_MAX;i++) {
+ circpad_cell_event_nonpadding_sent(client_side);
+ }
+
+ tt_int_op(mi->nonpadding_sent, OP_EQ, UINT16_MAX/2);
+ tt_int_op(mi->padding_sent, OP_EQ, UINT16_MAX/4+1);
+
+ done:
+ free_fake_origin_circuit(TO_ORIGIN_CIRCUIT(client_side));
+}
+
+/* Test global padding rate limits */
+static void
+test_circuitpadding_global_rate_limiting(void *arg)
+{
+ (void) arg;
+ bool retval;
+ circpad_machine_state_t *mi;
+ int i;
+
+ /* Ignore machine transitions for the purposes of this function, we only
+ * really care about padding counts */
+ MOCK(circpad_machine_spec_transition, circpad_machine_spec_transition_mock);
+ MOCK(circuitmux_attach_circuit, circuitmux_attach_circuit_mock);
+ MOCK(circuit_package_relay_cell,
+ circuit_package_relay_cell_mock);
+ MOCK(monotime_absolute_usec, mock_monotime_absolute_usec);
+
+ monotime_init();
+ monotime_enable_test_mocking();
+ monotime_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ monotime_coarse_set_mock_time_nsec(1*TOR_NSEC_PER_USEC);
+ curr_mocked_time = 1*TOR_NSEC_PER_USEC;
+ timers_initialize();
+
+ client_side = (circuit_t *)origin_circuit_new();
+ client_side->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ dummy_channel.cmux = circuitmux_alloc();
+
+ /* Setup machine and circuits */
+ relay_side = (circuit_t *)new_fake_orcirc(&dummy_channel, &dummy_channel);
+ relay_side->purpose = CIRCUIT_PURPOSE_OR;
+ helper_create_basic_machine();
+ relay_side->padding_machine[0] = &circ_client_machine;
+ relay_side->padding_info[0] =
+ circpad_circuit_machineinfo_new(relay_side, 0);
+ mi = relay_side->padding_info[0];
+ /* Set up the machine info so that we can get through the basic functions */
+ mi->state_length = CIRCPAD_STATE_LENGTH_INFINITE;
+
+ simulate_single_hop_extend(client_side, relay_side, 1);
+ simulate_single_hop_extend(client_side, relay_side, 1);
+
+ /* Now test the global limits by setting up the consensus */
+ networkstatus_t vote1;
+ vote1.net_params = smartlist_new();
+ smartlist_split_string(vote1.net_params,
+ "circpad_global_allowed_cells=100 circpad_global_max_padding_pct=50",
+ NULL, 0, 0);
+ /* Register global limits with the padding subsystem */
+ circpad_new_consensus_params(&vote1);
+
+ /* Check padding limit, should be fine since we haven't sent anything yet. */
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 0);
+
+ /* Send 99 padding cells which is below circpad_global_allowed_cells=100, so
+ * the rate limit will not trigger */
+ for (i=0;i<99;i++) {
+ circpad_send_padding_cell_for_callback(mi);
+ }
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 0);
+
+ /* Now send another padding cell to pass circpad_global_allowed_cells=100,
+ and see that the limit will trigger */
+ circpad_send_padding_cell_for_callback(mi);
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 1);
+
+ retval = circpad_machine_schedule_padding(mi);
+ tt_int_op(retval, OP_EQ, CIRCPAD_STATE_UNCHANGED);
+
+ /* Now send 92 non-padding cells to get near the
+ * circpad_global_max_padding_pct=50 limit; in particular with 96 non-padding
+ * cells, the padding traffic is still 51% of total traffic so limit should
+ * trigger */
+ for (i=0;i<92;i++) {
+ circpad_cell_event_nonpadding_sent(relay_side);
+ }
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 1);
+
+ /* Send another non-padding cell to bring the padding traffic to 50% of total
+ * traffic and get past the limit */
+ circpad_cell_event_nonpadding_sent(relay_side);
+ retval = circpad_machine_reached_padding_limit(mi);
+ tt_int_op(retval, OP_EQ, 0);
+
+ done:
+ free_fake_orcirc(relay_side);
+ circuitmux_detach_all_circuits(dummy_channel.cmux, NULL);
+ circuitmux_free(dummy_channel.cmux);
+ SMARTLIST_FOREACH(vote1.net_params, char *, cp, tor_free(cp));
+ smartlist_free(vote1.net_params);
+}
+
+#define TEST_CIRCUITPADDING(name, flags) \
+ { #name, test_##name, (flags), NULL, NULL }
+
+struct testcase_t circuitpadding_tests[] = {
+ TEST_CIRCUITPADDING(circuitpadding_tokens, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_negotiation, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_wronghop, TT_FORK),
+ /** Disabled unstable test until #29298 is implemented (see #29122) */
+ // TEST_CIRCUITPADDING(circuitpadding_circuitsetup_machine, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_conditions, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_rtt, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_sample_distribution, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_machine_rate_limiting, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_global_rate_limiting, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_token_removal_lower, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_token_removal_higher, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_closest_token_removal, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_closest_token_removal_usec, TT_FORK),
+ TEST_CIRCUITPADDING(circuitpadding_token_removal_exact, TT_FORK),
+ END_OF_TESTCASES
+};
diff --git a/src/test/test_circuitstats.c b/src/test/test_circuitstats.c
index c3cfad88da..1cbcb14f2b 100644
--- a/src/test/test_circuitstats.c
+++ b/src/test/test_circuitstats.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITBUILD_PRIVATE
diff --git a/src/test/test_circuituse.c b/src/test/test_circuituse.c
index 720adeac84..3acfc12044 100644
--- a/src/test/test_circuituse.c
+++ b/src/test/test_circuituse.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITLIST_PRIVATE
diff --git a/src/test/test_compat_libevent.c b/src/test/test_compat_libevent.c
index ade76bdb07..5d625483da 100644
--- a/src/test/test_compat_libevent.c
+++ b/src/test/test_compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define COMPAT_LIBEVENT_PRIVATE
diff --git a/src/test/test_config.c b/src/test/test_config.c
index 67a43d669e..72649dd9b1 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_connection.c b/src/test/test_connection.c
index 0013f47fbc..ebe7c6d36f 100644
--- a/src/test/test_connection.c
+++ b/src/test/test_connection.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_connection.h b/src/test/test_connection.h
index 27c296504a..47a5599e5f 100644
--- a/src/test/test_connection.h
+++ b/src/test/test_connection.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** Some constants used by test_connection and helpers */
diff --git a/src/test/test_conscache.c b/src/test/test_conscache.c
index b5cbd72515..095ff09350 100644
--- a/src/test/test_conscache.c
+++ b/src/test/test_conscache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_consdiff.c b/src/test/test_consdiff.c
index 23e8f7167e..7c4c92ea42 100644
--- a/src/test/test_consdiff.c
+++ b/src/test/test_consdiff.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2014, Daniel Martí
- * Copyright (c) 2014-2018, The Tor Project, Inc. */
+ * Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONSDIFF_PRIVATE
diff --git a/src/test/test_consdiffmgr.c b/src/test/test_consdiffmgr.c
index b84753ff83..74226b8c52 100644
--- a/src/test/test_consdiffmgr.c
+++ b/src/test/test_consdiffmgr.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONSDIFFMGR_PRIVATE
diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index 717eb0892a..a0832f868e 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -96,6 +96,30 @@ test_container_smartlist_basic(void *arg)
tor_free(v555);
}
+/** Test SMARTLIST_FOREACH_REVERSE_BEGIN loop macro */
+static void
+test_container_smartlist_foreach_reverse(void *arg)
+{
+ smartlist_t *sl = smartlist_new();
+ int i;
+
+ (void) arg;
+
+ /* Add integers to smartlist in increasing order */
+ for (i=0;i<100;i++) {
+ smartlist_add(sl, (void*)(uintptr_t)i);
+ }
+
+ /* Pop them out in reverse and test their value */
+ SMARTLIST_FOREACH_REVERSE_BEGIN(sl, void*, k) {
+ i--;
+ tt_ptr_op(k, OP_EQ, (void*)(uintptr_t)i);
+ } SMARTLIST_FOREACH_END(k);
+
+ done:
+ smartlist_free(sl);
+}
+
/** Run unit tests for smartlist-of-strings functionality. */
static void
test_container_smartlist_strings(void *arg)
@@ -1281,6 +1305,7 @@ test_container_smartlist_strings_eq(void *arg)
struct testcase_t container_tests[] = {
CONTAINER_LEGACY(smartlist_basic),
CONTAINER_LEGACY(smartlist_strings),
+ CONTAINER_LEGACY(smartlist_foreach_reverse),
CONTAINER_LEGACY(smartlist_overlap),
CONTAINER_LEGACY(smartlist_digests),
CONTAINER_LEGACY(smartlist_join),
diff --git a/src/test/test_controller.c b/src/test/test_controller.c
index 4f5a9f58d5..5b406e159b 100644
--- a/src/test/test_controller.c
+++ b/src/test/test_controller.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONTROL_PRIVATE
diff --git a/src/test/test_controller_events.c b/src/test/test_controller_events.c
index 99e1eb7cb0..647eac43c7 100644
--- a/src/test/test_controller_events.c
+++ b/src/test/test_controller_events.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONNECTION_PRIVATE
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index 81d2fa6f33..0b57448bcf 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -254,168 +254,6 @@ test_crypto_openssl_version(void *arg)
;
}
-/** Run unit tests for our random number generation function and its wrappers.
- */
-static void
-test_crypto_rng(void *arg)
-{
- int i, j, allok;
- char data1[100], data2[100];
- double d;
- char *h=NULL;
-
- /* Try out RNG. */
- (void)arg;
- tt_assert(! crypto_seed_rng());
- crypto_rand(data1, 100);
- crypto_rand(data2, 100);
- tt_mem_op(data1,OP_NE, data2,100);
- allok = 1;
- for (i = 0; i < 100; ++i) {
- uint64_t big;
- char *host;
- j = crypto_rand_int(100);
- if (j < 0 || j >= 100)
- allok = 0;
- big = crypto_rand_uint64(UINT64_C(1)<<40);
- if (big >= (UINT64_C(1)<<40))
- allok = 0;
- big = crypto_rand_uint64(UINT64_C(5));
- if (big >= 5)
- allok = 0;
- d = crypto_rand_double();
- tt_assert(d >= 0);
- tt_assert(d < 1.0);
- host = crypto_random_hostname(3,8,"www.",".onion");
- if (strcmpstart(host,"www.") ||
- strcmpend(host,".onion") ||
- strlen(host) < 13 ||
- strlen(host) > 18)
- allok = 0;
- tor_free(host);
- }
-
- /* Make sure crypto_random_hostname clips its inputs properly. */
- h = crypto_random_hostname(20000, 9000, "www.", ".onion");
- tt_assert(! strcmpstart(h,"www."));
- tt_assert(! strcmpend(h,".onion"));
- tt_int_op(63+4+6, OP_EQ, strlen(h));
-
- tt_assert(allok);
- done:
- tor_free(h);
-}
-
-static void
-test_crypto_rng_range(void *arg)
-{
- int got_smallest = 0, got_largest = 0;
- int i;
-
- (void)arg;
- for (i = 0; i < 1000; ++i) {
- int x = crypto_rand_int_range(5,9);
- tt_int_op(x, OP_GE, 5);
- tt_int_op(x, OP_LT, 9);
- if (x == 5)
- got_smallest = 1;
- if (x == 8)
- got_largest = 1;
- }
- /* These fail with probability 1/10^603. */
- tt_assert(got_smallest);
- tt_assert(got_largest);
-
- got_smallest = got_largest = 0;
- const uint64_t ten_billion = 10 * ((uint64_t)1000000000000);
- for (i = 0; i < 1000; ++i) {
- uint64_t x = crypto_rand_uint64_range(ten_billion, ten_billion+10);
- tt_u64_op(x, OP_GE, ten_billion);
- tt_u64_op(x, OP_LT, ten_billion+10);
- if (x == ten_billion)
- got_smallest = 1;
- if (x == ten_billion+9)
- got_largest = 1;
- }
-
- tt_assert(got_smallest);
- tt_assert(got_largest);
-
- const time_t now = time(NULL);
- for (i = 0; i < 2000; ++i) {
- time_t x = crypto_rand_time_range(now, now+60);
- tt_i64_op(x, OP_GE, now);
- tt_i64_op(x, OP_LT, now+60);
- if (x == now)
- got_smallest = 1;
- if (x == now+59)
- got_largest = 1;
- }
-
- tt_assert(got_smallest);
- tt_assert(got_largest);
- done:
- ;
-}
-
-static void
-test_crypto_rng_strongest(void *arg)
-{
- const char *how = arg;
- int broken = 0;
-
- if (how == NULL) {
- ;
- } else if (!strcmp(how, "nosyscall")) {
- break_strongest_rng_syscall = 1;
- } else if (!strcmp(how, "nofallback")) {
- break_strongest_rng_fallback = 1;
- } else if (!strcmp(how, "broken")) {
- broken = break_strongest_rng_syscall = break_strongest_rng_fallback = 1;
- }
-
-#define N 128
- uint8_t combine_and[N];
- uint8_t combine_or[N];
- int i, j;
-
- memset(combine_and, 0xff, N);
- memset(combine_or, 0, N);
-
- for (i = 0; i < 100; ++i) { /* 2^-100 chances just don't happen. */
- uint8_t output[N];
- memset(output, 0, N);
- if (how == NULL) {
- /* this one can't fail. */
- crypto_strongest_rand(output, sizeof(output));
- } else {
- int r = crypto_strongest_rand_raw(output, sizeof(output));
- if (r == -1) {
- if (broken) {
- goto done; /* we're fine. */
- }
- /* This function is allowed to break, but only if it always breaks. */
- tt_int_op(i, OP_EQ, 0);
- tt_skip();
- } else {
- tt_assert(! broken);
- }
- }
- for (j = 0; j < N; ++j) {
- combine_and[j] &= output[j];
- combine_or[j] |= output[j];
- }
- }
-
- for (j = 0; j < N; ++j) {
- tt_int_op(combine_and[j], OP_EQ, 0);
- tt_int_op(combine_or[j], OP_EQ, 0xff);
- }
- done:
- ;
-#undef N
-}
-
/** Run unit tests for our AES128 functionality */
static void
test_crypto_aes128(void *arg)
@@ -3140,15 +2978,6 @@ test_crypto_failure_modes(void *arg)
struct testcase_t crypto_tests[] = {
CRYPTO_LEGACY(formats),
- CRYPTO_LEGACY(rng),
- { "rng_range", test_crypto_rng_range, 0, NULL, NULL },
- { "rng_strongest", test_crypto_rng_strongest, TT_FORK, NULL, NULL },
- { "rng_strongest_nosyscall", test_crypto_rng_strongest, TT_FORK,
- &passthrough_setup, (void*)"nosyscall" },
- { "rng_strongest_nofallback", test_crypto_rng_strongest, TT_FORK,
- &passthrough_setup, (void*)"nofallback" },
- { "rng_strongest_broken", test_crypto_rng_strongest, TT_FORK,
- &passthrough_setup, (void*)"broken" },
{ "openssl_version", test_crypto_openssl_version, TT_FORK, NULL, NULL },
{ "aes_AES", test_crypto_aes128, TT_FORK, &passthrough_setup, (void*)"aes" },
{ "aes_EVP", test_crypto_aes128, TT_FORK, &passthrough_setup, (void*)"evp" },
diff --git a/src/test/test_crypto_ope.c b/src/test/test_crypto_ope.c
index 4e7b952327..dc67c02676 100644
--- a/src/test/test_crypto_ope.c
+++ b/src/test/test_crypto_ope.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2017, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_crypto_openssl.c b/src/test/test_crypto_openssl.c
index 92f9cbab2f..42dc3f6be2 100644
--- a/src/test/test_crypto_openssl.c
+++ b/src/test/test_crypto_openssl.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_crypto_rng.c b/src/test/test_crypto_rng.c
new file mode 100644
index 0000000000..6b7749a889
--- /dev/null
+++ b/src/test/test_crypto_rng.c
@@ -0,0 +1,332 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#define CRYPTO_RAND_PRIVATE
+#include "core/or/or.h"
+#include "test/test.h"
+#include "lib/crypt_ops/aes.h"
+#include "lib/crypt_ops/crypto_format.h"
+#include "lib/crypt_ops/crypto_rand.h"
+
+/** Run unit tests for our random number generation function and its wrappers.
+ */
+static void
+test_crypto_rng(void *arg)
+{
+ int i, j, allok;
+ char data1[100], data2[100];
+ double d;
+ char *h=NULL;
+
+ /* Try out RNG. */
+ (void)arg;
+ tt_assert(! crypto_seed_rng());
+ crypto_rand(data1, 100);
+ crypto_rand(data2, 100);
+ tt_mem_op(data1,OP_NE, data2,100);
+ allok = 1;
+ for (i = 0; i < 100; ++i) {
+ uint64_t big;
+ char *host;
+ j = crypto_rand_int(100);
+ if (j < 0 || j >= 100)
+ allok = 0;
+ big = crypto_rand_uint64(UINT64_C(1)<<40);
+ if (big >= (UINT64_C(1)<<40))
+ allok = 0;
+ big = crypto_rand_uint64(UINT64_C(5));
+ if (big >= 5)
+ allok = 0;
+ d = crypto_rand_double();
+ tt_assert(d >= 0);
+ tt_assert(d < 1.0);
+ host = crypto_random_hostname(3,8,"www.",".onion");
+ if (strcmpstart(host,"www.") ||
+ strcmpend(host,".onion") ||
+ strlen(host) < 13 ||
+ strlen(host) > 18)
+ allok = 0;
+ tor_free(host);
+ }
+
+ /* Make sure crypto_random_hostname clips its inputs properly. */
+ h = crypto_random_hostname(20000, 9000, "www.", ".onion");
+ tt_assert(! strcmpstart(h,"www."));
+ tt_assert(! strcmpend(h,".onion"));
+ tt_int_op(63+4+6, OP_EQ, strlen(h));
+
+ tt_assert(allok);
+ done:
+ tor_free(h);
+}
+
+static void
+test_crypto_rng_range(void *arg)
+{
+ int got_smallest = 0, got_largest = 0;
+ int i;
+
+ (void)arg;
+ for (i = 0; i < 1000; ++i) {
+ int x = crypto_rand_int_range(5,9);
+ tt_int_op(x, OP_GE, 5);
+ tt_int_op(x, OP_LT, 9);
+ if (x == 5)
+ got_smallest = 1;
+ if (x == 8)
+ got_largest = 1;
+ }
+ /* These fail with probability 1/10^603. */
+ tt_assert(got_smallest);
+ tt_assert(got_largest);
+
+ got_smallest = got_largest = 0;
+ const uint64_t ten_billion = 10 * ((uint64_t)1000000000000);
+ for (i = 0; i < 1000; ++i) {
+ uint64_t x = crypto_rand_uint64_range(ten_billion, ten_billion+10);
+ tt_u64_op(x, OP_GE, ten_billion);
+ tt_u64_op(x, OP_LT, ten_billion+10);
+ if (x == ten_billion)
+ got_smallest = 1;
+ if (x == ten_billion+9)
+ got_largest = 1;
+ }
+
+ tt_assert(got_smallest);
+ tt_assert(got_largest);
+
+ const time_t now = time(NULL);
+ for (i = 0; i < 2000; ++i) {
+ time_t x = crypto_rand_time_range(now, now+60);
+ tt_i64_op(x, OP_GE, now);
+ tt_i64_op(x, OP_LT, now+60);
+ if (x == now)
+ got_smallest = 1;
+ if (x == now+59)
+ got_largest = 1;
+ }
+
+ tt_assert(got_smallest);
+ tt_assert(got_largest);
+ done:
+ ;
+}
+
+static void
+test_crypto_rng_strongest(void *arg)
+{
+ const char *how = arg;
+ int broken = 0;
+
+ if (how == NULL) {
+ ;
+ } else if (!strcmp(how, "nosyscall")) {
+ break_strongest_rng_syscall = 1;
+ } else if (!strcmp(how, "nofallback")) {
+ break_strongest_rng_fallback = 1;
+ } else if (!strcmp(how, "broken")) {
+ broken = break_strongest_rng_syscall = break_strongest_rng_fallback = 1;
+ }
+
+#define N 128
+ uint8_t combine_and[N];
+ uint8_t combine_or[N];
+ int i, j;
+
+ memset(combine_and, 0xff, N);
+ memset(combine_or, 0, N);
+
+ for (i = 0; i < 100; ++i) { /* 2^-100 chances just don't happen. */
+ uint8_t output[N];
+ memset(output, 0, N);
+ if (how == NULL) {
+ /* this one can't fail. */
+ crypto_strongest_rand(output, sizeof(output));
+ } else {
+ int r = crypto_strongest_rand_raw(output, sizeof(output));
+ if (r == -1) {
+ if (broken) {
+ goto done; /* we're fine. */
+ }
+ /* This function is allowed to break, but only if it always breaks. */
+ tt_int_op(i, OP_EQ, 0);
+ tt_skip();
+ } else {
+ tt_assert(! broken);
+ }
+ }
+ for (j = 0; j < N; ++j) {
+ combine_and[j] &= output[j];
+ combine_or[j] |= output[j];
+ }
+ }
+
+ for (j = 0; j < N; ++j) {
+ tt_int_op(combine_and[j], OP_EQ, 0);
+ tt_int_op(combine_or[j], OP_EQ, 0xff);
+ }
+ done:
+ ;
+#undef N
+}
+
+static void
+test_crypto_rng_fast(void *arg)
+{
+ (void)arg;
+ crypto_fast_rng_t *rng = crypto_fast_rng_new();
+ tt_assert(rng);
+
+ /* Rudimentary black-block test to make sure that our prng outputs
+ * have all bits sometimes on and all bits sometimes off. */
+ uint64_t m1 = 0, m2 = ~(uint64_t)0;
+ const int N = 128;
+
+ for (int i=0; i < N; ++i) {
+ uint64_t v;
+ crypto_fast_rng_getbytes(rng, (void*)&v, sizeof(v));
+ m1 |= v;
+ m2 &= v;
+ }
+
+ tt_u64_op(m1, OP_EQ, ~(uint64_t)0);
+ tt_u64_op(m2, OP_EQ, 0);
+
+ /* Check range functions. */
+ int counts[5];
+ memset(counts, 0, sizeof(counts));
+ for (int i=0; i < N; ++i) {
+ unsigned u = crypto_fast_rng_get_uint(rng, 5);
+ tt_int_op(u, OP_GE, 0);
+ tt_int_op(u, OP_LT, 5);
+ counts[u]++;
+
+ uint64_t u64 = crypto_fast_rng_get_uint64(rng, UINT64_C(1)<<40);
+ tt_u64_op(u64, OP_GE, 0);
+ tt_u64_op(u64, OP_LT, UINT64_C(1)<<40);
+
+ double d = crypto_fast_rng_get_double(rng);
+ tt_assert(d >= 0.0);
+ tt_assert(d < 1.0);
+ }
+
+ /* All values should have come up once. */
+ for (int i=0; i<5; ++i) {
+ tt_int_op(counts[i], OP_GT, 0);
+ }
+
+ /* per-thread rand_fast shouldn't crash or leak. */
+ crypto_fast_rng_t *t_rng = get_thread_fast_rng();
+ for (int i = 0; i < N; ++i) {
+ uint64_t u64 = crypto_fast_rng_get_uint64(t_rng, UINT64_C(1)<<40);
+ tt_u64_op(u64, OP_GE, 0);
+ tt_u64_op(u64, OP_LT, UINT64_C(1)<<40);
+ }
+
+ done:
+ crypto_fast_rng_free(rng);
+}
+
+static void
+test_crypto_rng_fast_whitebox(void *arg)
+{
+ (void)arg;
+ const size_t buflen = crypto_fast_rng_get_bytes_used_per_stream();
+ char *buf = tor_malloc_zero(buflen);
+ char *buf2 = tor_malloc_zero(buflen);
+ char *buf3 = NULL, *buf4 = NULL;
+
+ crypto_cipher_t *cipher = NULL, *cipher2 = NULL;
+ uint8_t seed[CRYPTO_FAST_RNG_SEED_LEN];
+ memset(seed, 0, sizeof(seed));
+
+ /* Start with a prng with zero key and zero IV. */
+ crypto_fast_rng_t *rng = crypto_fast_rng_new_from_seed(seed);
+ tt_assert(rng);
+
+ /* We'll use a stream cipher to keep in sync */
+ cipher = crypto_cipher_new_with_iv_and_bits(seed, seed+32, 256);
+
+ /* The first 48 bytes are used for the next seed -- let's make sure we have
+ * them.
+ */
+ memset(seed, 0, sizeof(seed));
+ crypto_cipher_crypt_inplace(cipher, (char*)seed, sizeof(seed));
+
+ /* if we get 128 bytes, they should match the bytes from the aes256-counter
+ * stream, starting at position 48.
+ */
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf, 128);
+ memset(buf2, 0, 128);
+ crypto_cipher_crypt_inplace(cipher, buf2, 128);
+ tt_mem_op(buf, OP_EQ, buf2, 128);
+
+ /* Try that again, with an odd number of bytes. */
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf, 199);
+ memset(buf2, 0, 199);
+ crypto_cipher_crypt_inplace(cipher, buf2, 199);
+ tt_mem_op(buf, OP_EQ, buf2, 199);
+
+ /* Make sure that refilling works as expected: skip all but the last 5 bytes
+ * of this steam. */
+ size_t skip = buflen - (199+128) - 5;
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf, skip);
+ crypto_cipher_crypt_inplace(cipher, buf2, skip);
+
+ /* Now get the next 128 bytes. The first 5 will come from this stream, and
+ * the next 5 will come from the stream keyed by the new value of 'seed'. */
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf, 128);
+ memset(buf2, 0, 128);
+ crypto_cipher_crypt_inplace(cipher, buf2, 5);
+ crypto_cipher_free(cipher);
+ cipher = crypto_cipher_new_with_iv_and_bits(seed, seed+32, 256);
+ memset(seed, 0, sizeof(seed));
+ crypto_cipher_crypt_inplace(cipher, (char*)seed, sizeof(seed));
+ crypto_cipher_crypt_inplace(cipher, buf2+5, 128-5);
+ tt_mem_op(buf, OP_EQ, buf2, 128);
+
+ /* And check the next 7 bytes to make sure we didn't discard anything. */
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf, 7);
+ memset(buf2, 0, 7);
+ crypto_cipher_crypt_inplace(cipher, buf2, 7);
+ tt_mem_op(buf, OP_EQ, buf2, 7);
+
+ /* Now try the optimization for long outputs. */
+ buf3 = tor_malloc(65536);
+ crypto_fast_rng_getbytes(rng, (uint8_t*)buf3, 65536);
+
+ buf4 = tor_malloc_zero(65536);
+ uint8_t seed2[CRYPTO_FAST_RNG_SEED_LEN];
+ memset(seed2, 0, sizeof(seed2));
+ crypto_cipher_crypt_inplace(cipher, (char*)seed2, sizeof(seed2));
+ cipher2 = crypto_cipher_new_with_iv_and_bits(seed2, seed2+32, 256);
+ crypto_cipher_crypt_inplace(cipher2, buf4, 65536);
+ tt_mem_op(buf3, OP_EQ, buf4, 65536);
+
+ done:
+ crypto_fast_rng_free(rng);
+ crypto_cipher_free(cipher);
+ crypto_cipher_free(cipher2);
+ tor_free(buf);
+ tor_free(buf2);
+ tor_free(buf3);
+ tor_free(buf4);
+}
+
+struct testcase_t crypto_rng_tests[] = {
+ { "rng", test_crypto_rng, 0, NULL, NULL },
+ { "rng_range", test_crypto_rng_range, 0, NULL, NULL },
+ { "rng_strongest", test_crypto_rng_strongest, TT_FORK, NULL, NULL },
+ { "rng_strongest_nosyscall", test_crypto_rng_strongest, TT_FORK,
+ &passthrough_setup, (void*)"nosyscall" },
+ { "rng_strongest_nofallback", test_crypto_rng_strongest, TT_FORK,
+ &passthrough_setup, (void*)"nofallback" },
+ { "rng_strongest_broken", test_crypto_rng_strongest, TT_FORK,
+ &passthrough_setup, (void*)"broken" },
+ { "fast", test_crypto_rng_fast, 0, NULL, NULL },
+ { "fast_whitebox", test_crypto_rng_fast_whitebox, 0, NULL, NULL },
+ END_OF_TESTCASES
+};
diff --git a/src/test/test_crypto_slow.c b/src/test/test_crypto_slow.c
index ca6b7b8d4d..e24aee8930 100644
--- a/src/test/test_crypto_slow.c
+++ b/src/test/test_crypto_slow.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_data.c b/src/test/test_data.c
index be8153258b..fe1190ea77 100644
--- a/src/test/test_data.c
+++ b/src/test/test_data.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "test/test.h"
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 5cdbd877ce..4132d42d12 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -91,6 +91,9 @@
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#define NS_MODULE dir
@@ -1765,7 +1768,8 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, "", 0);
setup_capture_of_logs(LOG_WARN);
tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
expect_log_msg("Empty bandwidth file\n");
teardown_capture_of_logs();
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
@@ -1781,7 +1785,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op("", OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1792,7 +1798,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, header_lines_v100, 0);
bw_file_headers = smartlist_new();
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1805,7 +1813,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1816,7 +1826,8 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
tor_asprintf(&content, "%s%s", header_lines_v100, relay_lines_v100);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL, NULL));
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL, NULL,
+ NULL));
/* Test bandwidth file including v1.1.0 bandwidth headers and
* v1.0.0 relay lines. bw_file_headers will contain the v1.1.0 headers. */
@@ -1826,7 +1837,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1842,7 +1855,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1859,7 +1874,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1870,7 +1887,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
bw_file_headers = smartlist_new();
write_str_to_file(fname, header_lines_v110_no_terminator, 0);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1881,7 +1900,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
bw_file_headers = smartlist_new();
write_str_to_file(fname, header_lines_v110, 0);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1896,7 +1917,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1911,7 +1934,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1927,7 +1952,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1944,7 +1971,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
tt_str_op(bw_file_headers_str_bad, OP_EQ, bw_file_headers_str);
SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
@@ -1962,7 +1991,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
tt_int_op(MAX_BW_FILE_HEADER_COUNT_IN_VOTE, OP_EQ,
smartlist_len(bw_file_headers));
bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
@@ -1983,7 +2014,9 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
write_str_to_file(fname, content, 0);
tor_free(content);
tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
- bw_file_headers));
+ bw_file_headers,
+ NULL));
+
tt_int_op(MAX_BW_FILE_HEADER_COUNT_IN_VOTE, OP_EQ,
smartlist_len(bw_file_headers));
/* force bw_file_headers to be bigger than
@@ -1997,6 +2030,7 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
tor_free(bw_file_headers_str);
done:
+ unlink(fname);
tor_free(fname);
tor_free(header_lines_v100);
tor_free(header_lines_v110_no_terminator);
@@ -3830,6 +3864,62 @@ mock_get_options(void)
return mock_options;
}
+/**
+ * Test dirauth_get_b64_digest_bw_file.
+ * This function should be near the other bwauth functions, but it needs
+ * mock_get_options, that is only defined here.
+ */
+
+static void
+test_dir_bwauth_bw_file_digest256(void *arg)
+{
+ (void)arg;
+ const char *content =
+ "1541171221\n"
+ "node_id=$68A483E05A2ABDCA6DA5A3EF8DB5177638A27F80 "
+ "master_key_ed25519=YaqV4vbvPYKucElk297eVdNArDz9HtIwUoIeo0+cVIpQ "
+ "bw=760 nick=Test time=2018-05-08T16:13:26\n";
+
+ char *fname = tor_strdup(get_fname("V3BandwidthsFile"));
+ /* Initialize to a wrong digest. */
+ uint8_t digest[DIGEST256_LEN] = "01234567890123456789abcdefghijkl";
+
+ /* Digest of an empty string. Initialize to a wrong digest. */
+ char digest_empty_str[DIGEST256_LEN] = "01234567890123456789abcdefghijkl";
+ crypto_digest256(digest_empty_str, "", 0, DIGEST_SHA256);
+
+ /* Digest of the content. Initialize to a wrong digest. */
+ char digest_expected[DIGEST256_LEN] = "01234567890123456789abcdefghijkl";
+ crypto_digest256(digest_expected, content, strlen(content), DIGEST_SHA256);
+
+ /* When the bandwidth file can not be found. */
+ tt_int_op(-1, OP_EQ,
+ dirserv_read_measured_bandwidths(fname,
+ NULL, NULL, digest));
+ tt_mem_op(digest, OP_EQ, digest_empty_str, DIGEST256_LEN);
+
+ /* When there is a timestamp but it is too old. */
+ write_str_to_file(fname, content, 0);
+ tt_int_op(-1, OP_EQ,
+ dirserv_read_measured_bandwidths(fname,
+ NULL, NULL, digest));
+ /* The digest will be correct. */
+ tt_mem_op(digest, OP_EQ, digest_expected, DIGEST256_LEN);
+
+ update_approx_time(1541171221);
+
+ /* When there is a bandwidth file and it can be read. */
+ tt_int_op(0, OP_EQ,
+ dirserv_read_measured_bandwidths(fname,
+ NULL, NULL, digest));
+ tt_mem_op(digest, OP_EQ, digest_expected, DIGEST256_LEN);
+
+ done:
+ unlink(fname);
+ tor_free(fname);
+ update_approx_time(time(NULL));
+}
+
static void
reset_routerstatus(routerstatus_t *rs,
const char *hex_identity_digest,
@@ -6411,6 +6501,7 @@ struct testcase_t dir_tests[] = {
DIR_LEGACY(measured_bw_kb_line_is_after_headers),
DIR_LEGACY(measured_bw_kb_cache),
DIR_LEGACY(dirserv_read_measured_bandwidths),
+ DIR(bwauth_bw_file_digest256, 0),
DIR_LEGACY(param_voting),
DIR(param_voting_lookup, 0),
DIR_LEGACY(v3_networkstatus),
diff --git a/src/test/test_dir_common.c b/src/test/test_dir_common.c
index eadeb11921..0b87e29873 100644
--- a/src/test/test_dir_common.c
+++ b/src/test/test_dir_common.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_dir_common.h b/src/test/test_dir_common.h
index 1e958a21ff..d6c5241b14 100644
--- a/src/test/test_dir_common.h
+++ b/src/test/test_dir_common.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_dir_handle_get.c b/src/test/test_dir_handle_get.c
index 2ce98769af..841ac77916 100644
--- a/src/test/test_dir_handle_get.c
+++ b/src/test/test_dir_handle_get.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define RENDCOMMON_PRIVATE
diff --git a/src/test/test_dns.c b/src/test/test_dns.c
index ea0fcf8c5e..231e6965f7 100644
--- a/src/test/test_dns.c
+++ b/src/test/test_dns.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_dos.c b/src/test/test_dos.c
index 40a4c6ba29..4756c5014e 100644
--- a/src/test/test_dos.c
+++ b/src/test/test_dos.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DOS_PRIVATE
diff --git a/src/test/test_entryconn.c b/src/test/test_entryconn.c
index bec70090e6..fc7c5d5800 100644
--- a/src/test/test_entryconn.c
+++ b/src/test/test_entryconn.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_entrynodes.c b/src/test/test_entrynodes.c
index 069440a8ce..729795b674 100644
--- a/src/test/test_entrynodes.c
+++ b/src/test/test_entrynodes.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_extorport.c b/src/test/test_extorport.c
index 432a9ea5e3..aeb71ec583 100644
--- a/src/test/test_extorport.c
+++ b/src/test/test_extorport.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONNECTION_PRIVATE
diff --git a/src/test/test_geoip.c b/src/test/test_geoip.c
index 6f9c39063b..16c566bdbc 100644
--- a/src/test/test_geoip.c
+++ b/src/test/test_geoip.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_guardfraction.c b/src/test/test_guardfraction.c
index d6f4cd63f2..ac8bfbfded 100644
--- a/src/test/test_guardfraction.c
+++ b/src/test/test_guardfraction.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define GUARDFRACTION_PRIVATE
diff --git a/src/test/test_handles.c b/src/test/test_handles.c
index 2910d7e18f..7f1d6e1898 100644
--- a/src/test/test_handles.c
+++ b/src/test/test_handles.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_helpers.c b/src/test/test_helpers.c
index b7bda16494..13de1e154b 100644
--- a/src/test/test_helpers.c
+++ b/src/test/test_helpers.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_helpers.h b/src/test/test_helpers.h
index 72bf7f2f71..9e376a563d 100644
--- a/src/test/test_helpers.h
+++ b/src/test/test_helpers.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TOR_TEST_HELPERS_H
diff --git a/src/test/test_hs.c b/src/test/test_hs.c
index e3599d5720..a611b46ca6 100644
--- a/src/test/test_hs.c
+++ b/src/test/test_hs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_cache.c b/src/test/test_hs_cache.c
index 203a1d7039..9182829116 100644
--- a/src/test/test_hs_cache.c
+++ b/src/test/test_hs_cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_cell.c b/src/test/test_hs_cell.c
index 5b48dd3785..0c93f593ce 100644
--- a/src/test/test_hs_cell.c
+++ b/src/test/test_hs_cell.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_client.c b/src/test/test_hs_client.c
index 91b3ed1ec4..2f2bb45581 100644
--- a/src/test/test_hs_client.c
+++ b/src/test/test_hs_client.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_common.c b/src/test/test_hs_common.c
index 6198573f22..eb7f3bfbb0 100644
--- a/src/test/test_hs_common.c
+++ b/src/test/test_hs_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_config.c b/src/test/test_hs_config.c
index b6ab0c21f9..c2c556307d 100644
--- a/src/test/test_hs_config.c
+++ b/src/test/test_hs_config.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_control.c b/src/test/test_hs_control.c
index 48402030bf..ba67712f1b 100644
--- a/src/test/test_hs_control.c
+++ b/src/test/test_hs_control.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_descriptor.c b/src/test/test_hs_descriptor.c
index 428ca1024b..de584ed47a 100644
--- a/src/test/test_hs_descriptor.c
+++ b/src/test/test_hs_descriptor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_intropoint.c b/src/test/test_hs_intropoint.c
index 628d99bfde..660f21ffd8 100644
--- a/src/test/test_hs_intropoint.c
+++ b/src/test/test_hs_intropoint.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_ntor.c b/src/test/test_hs_ntor.c
index eeb0491657..1c694e6040 100644
--- a/src/test/test_hs_ntor.c
+++ b/src/test/test_hs_ntor.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_hs_ntor_cl.c b/src/test/test_hs_ntor_cl.c
index a4915c4f8a..6341b96d84 100644
--- a/src/test/test_hs_ntor_cl.c
+++ b/src/test/test_hs_ntor_cl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** This is a wrapper over the little-t-tor HS ntor functions. The wrapper is
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index ccb4d93feb..43bf894383 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_introduce.c b/src/test/test_introduce.c
index 4d2d909945..4a6d90d97e 100644
--- a/src/test/test_introduce.c
+++ b/src/test/test_introduce.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_keygen.sh b/src/test/test_keygen.sh
index 455f9e7d42..9fbf7dd578 100755
--- a/src/test/test_keygen.sh
+++ b/src/test/test_keygen.sh
@@ -6,14 +6,14 @@
umask 077
set -e
-if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
+if [ $# -eq 0 ] || [ ! -f "${1}" ] || [ ! -x "${1}" ]; then
if [ "$TESTING_TOR_BINARY" = "" ] ; then
echo "Usage: ${0} PATH_TO_TOR [case-number]"
exit 1
fi
fi
-UNAME_OS=`uname -s | cut -d_ -f1`
+UNAME_OS=$(uname -s | cut -d_ -f1)
if test "$UNAME_OS" = 'CYGWIN' || \
test "$UNAME_OS" = 'MSYS' || \
test "$UNAME_OS" = 'MINGW'; then
@@ -64,11 +64,11 @@ dump() { xxd -p "$1" | tr -d '\n '; }
die() { echo "$1" >&2 ; exit 5; }
check_dir() { [ -d "$1" ] || die "$1 did not exist"; }
check_file() { [ -e "$1" ] || die "$1 did not exist"; }
-check_no_file() { [ -e "$1" ] && die "$1 was not supposed to exist" || true; }
-check_files_eq() { cmp "$1" "$2" || die "$1 and $2 did not match: `dump $1` vs `dump $2`"; }
+check_no_file() { if [ -e "$1" ]; then die "$1 was not supposed to exist"; fi }
+check_files_eq() { cmp "$1" "$2" || die "$1 and $2 did not match: $(dump "$1") vs $(dump "$2")"; }
check_keys_eq() { check_files_eq "${SRC}/keys/${1}" "${ME}/keys/${1}"; }
-DATA_DIR=`mktemp -d -t tor_keygen_tests.XXXXXX`
+DATA_DIR=$(mktemp -d -t tor_keygen_tests.XXXXXX)
if [ -z "$DATA_DIR" ]; then
echo "Failure: mktemp invocation returned empty string" >&2
exit 3
@@ -77,10 +77,10 @@ if [ ! -d "$DATA_DIR" ]; then
echo "Failure: mktemp invocation result doesn't point to directory" >&2
exit 3
fi
-trap "rm -rf '$DATA_DIR'" 0
+trap 'rm -rf "$DATA_DIR"' 0
# Use an absolute path for this or Tor will complain
-DATA_DIR=`cd "${DATA_DIR}" && pwd`
+DATA_DIR=$(cd "${DATA_DIR}" && pwd)
touch "${DATA_DIR}/empty_torrc"
@@ -143,7 +143,9 @@ ME="${DATA_DIR}/case2a"
SRC="${DATA_DIR}/orig"
mkdir -p "${ME}/keys"
cp "${SRC}/keys/ed25519_master_id_public_key" "${ME}/keys/"
-${TOR} --DataDirectory "${ME}" --list-fingerprint > "${ME}/stdout" && die "Somehow succeeded when missing secret key, certs: `cat ${ME}/stdout`" || true
+if ${TOR} --DataDirectory "${ME}" --list-fingerprint > "${ME}/stdout"; then
+ die "Somehow succeeded when missing secret key, certs: $(cat "${ME}/stdout")"
+fi
check_files_eq "${SRC}/keys/ed25519_master_id_public_key" "${ME}/keys/ed25519_master_id_public_key"
grep "We needed to load a secret key.*but couldn't find it" "${ME}/stdout" >/dev/null || die "Tor didn't declare that it was missing a secret key"
@@ -280,7 +282,9 @@ SRC="${DATA_DIR}/encrypted"
mkdir -p "${ME}/keys"
cp "${SRC}/keys/ed25519_master_id_secret_key_encrypted" "${ME}/keys/"
cp "${SRC}/keys/ed25519_master_id_public_key" "${ME}/keys/"
-${TOR} --DataDirectory "${ME}" --list-fingerprint > "${ME}/stdout" && die "Tor started with encrypted secret key and no certs" || true
+if ${TOR} --DataDirectory "${ME}" --list-fingerprint > "${ME}/stdout"; then
+ die "Tor started with encrypted secret key and no certs"
+fi
check_no_file "${ME}/keys/ed25519_signing_cert"
check_no_file "${ME}/keys/ed25519_signing_secret_key"
@@ -369,7 +373,9 @@ mkdir -p "${ME}/keys"
cp "${SRC}/keys/ed25519_master_id_public_key" "${ME}/keys/"
cp "${OTHER}/keys/ed25519_master_id_secret_key" "${ME}/keys/"
-${TOR} --DataDirectory "${ME}" --list-fingerprint >"${ME}/stdout" && die "Successfully started with mismatched keys!?" || true
+if ${TOR} --DataDirectory "${ME}" --list-fingerprint >"${ME}/stdout"; then
+ die "Successfully started with mismatched keys!?"
+fi
grep "public_key does not match.*secret_key" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a key mismatch"
@@ -385,7 +391,9 @@ ME="${DATA_DIR}/case11a"
mkdir -p "${ME}/keys"
-${TOR} --DataDirectory "${ME}" --passphrase-fd 1 > "${ME}/stdout" && die "Successfully started with passphrase-fd but no keygen?" || true
+if ${TOR} --DataDirectory "${ME}" --passphrase-fd 1 > "${ME}/stdout"; then
+ die "Successfully started with passphrase-fd but no keygen?"
+fi
grep "passphrase-fd specified without --keygen" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a problem with the arguments."
@@ -401,7 +409,9 @@ ME="${DATA_DIR}/case11b"
mkdir -p "${ME}/keys"
-${TOR} --DataDirectory "${ME}" --no-passphrase > "${ME}/stdout" && die "Successfully started with no-passphrase but no keygen?" || true
+if ${TOR} --DataDirectory "${ME}" --no-passphrase > "${ME}/stdout"; then
+ die "Successfully started with no-passphrase but no keygen?"
+fi
grep "no-passphrase specified without --keygen" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a problem with the arguments."
@@ -417,7 +427,9 @@ ME="${DATA_DIR}/case11C"
mkdir -p "${ME}/keys"
-${TOR} --DataDirectory "${ME}" --newpass > "${ME}/stdout" && die "Successfully started with newpass but no keygen?" || true
+if ${TOR} --DataDirectory "${ME}" --newpass > "${ME}/stdout"; then
+ die "Successfully started with newpass but no keygen?"
+fi
grep "newpass specified without --keygen" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a problem with the arguments."
@@ -455,7 +467,9 @@ ME="${DATA_DIR}/case11E"
mkdir -p "${ME}/keys"
-${TOR} --DataDirectory "${ME}" --keygen --passphrase-fd ewigeblumenkraft > "${ME}/stdout" && die "Successfully started with bogus passphrase-fd?" || true
+if ${TOR} --DataDirectory "${ME}" --keygen --passphrase-fd ewigeblumenkraft > "${ME}/stdout"; then
+ die "Successfully started with bogus passphrase-fd?"
+fi
grep "Invalid --passphrase-fd value" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a problem with the arguments."
@@ -472,7 +486,9 @@ ME="${DATA_DIR}/case11F"
mkdir -p "${ME}/keys"
-${TOR} --DataDirectory "${ME}" --keygen --passphrase-fd 1 --no-passphrase > "${ME}/stdout" && die "Successfully started with bogus passphrase-fd combination?" || true
+if ${TOR} --DataDirectory "${ME}" --keygen --passphrase-fd 1 --no-passphrase > "${ME}/stdout"; then
+ die "Successfully started with bogus passphrase-fd combination?"
+fi
grep "no-passphrase specified with --passphrase-fd" "${ME}/stdout" >/dev/null || die "Tor didn't declare that there was a problem with the arguments."
diff --git a/src/test/test_keypin.c b/src/test/test_keypin.c
index 9af12ff548..e7beef8609 100644
--- a/src/test/test_keypin.c
+++ b/src/test/test_keypin.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c
index 82a91a9ae2..34f59f26cd 100644
--- a/src/test/test_link_handshake.c
+++ b/src/test/test_link_handshake.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_logging.c b/src/test/test_logging.c
index 2ecae461a3..6416e98a4e 100644
--- a/src/test/test_logging.c
+++ b/src/test/test_logging.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONFIG_PRIVATE
diff --git a/src/test/test_mainloop.c b/src/test/test_mainloop.c
index d797417912..2c3449305a 100644
--- a/src/test/test_mainloop.c
+++ b/src/test/test_mainloop.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
index fd79aee6be..53ee799185 100644
--- a/src/test/test_microdesc.c
+++ b/src/test/test_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_netinfo.c b/src/test/test_netinfo.c
index 8fc5330a46..27d276d42f 100644
--- a/src/test/test_netinfo.c
+++ b/src/test/test_netinfo.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_nodelist.c b/src/test/test_nodelist.c
index ed919f4edf..8d6d3cb974 100644
--- a/src/test/test_nodelist.c
+++ b/src/test/test_nodelist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_ntor_cl.c b/src/test/test_ntor_cl.c
index 3f914523a3..68b6927f56 100644
--- a/src/test/test_ntor_cl.c
+++ b/src/test/test_ntor_cl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index f84dc0764b..da6b2ee14d 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for OOM handling logic */
diff --git a/src/test/test_oos.c b/src/test/test_oos.c
index fb0daa7a8d..815feda7ce 100644
--- a/src/test/test_oos.c
+++ b/src/test/test_oos.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for OOS handler */
diff --git a/src/test/test_options.c b/src/test/test_options.c
index 6506731823..f12e6b6763 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONFIG_PRIVATE
diff --git a/src/test/test_parsecommon.c b/src/test/test_parsecommon.c
index 8e74fcdb4d..0c8f467a45 100644
--- a/src/test/test_parsecommon.c
+++ b/src/test/test_parsecommon.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_pem.c b/src/test/test_pem.c
index 2bae286e25..865688b1a7 100644
--- a/src/test/test_pem.c
+++ b/src/test/test_pem.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_periodic_event.c b/src/test/test_periodic_event.c
index f3d518eb7b..ebac20838f 100644
--- a/src/test/test_periodic_event.c
+++ b/src/test/test_periodic_event.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_policy.c b/src/test/test_policy.c
index 3820c6c1db..46d4a1b94a 100644
--- a/src/test/test_policy.c
+++ b/src/test/test_policy.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Tor Project, Inc. */
+/* Copyright (c) 2013-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CONFIG_PRIVATE
diff --git a/src/test/test_prob_distr.c b/src/test/test_prob_distr.c
new file mode 100644
index 0000000000..42cc6d70f6
--- /dev/null
+++ b/src/test/test_prob_distr.c
@@ -0,0 +1,1453 @@
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file test_prob_distr.c
+ * \brief Test probability distributions.
+ * \detail
+ *
+ * For each probability distribution we do two kinds of tests:
+ *
+ * a) We do numerical deterministic testing of their cdf/icdf/sf/isf functions
+ * and the various relationships between them for each distribution. We also
+ * do deterministic tests on their sampling functions. Test vectors for
+ * these tests were computed from alternative implementations and were
+ * eyeballed to make sure they make sense
+ * (e.g. src/test/prob_distr_mpfr_ref.c computes logit(p) using GNU mpfr
+ * with 200-bit precision and is then tested in test_logit_logistic()).
+ *
+ * b) We do stochastic hypothesis testing (G-test) to ensure that sampling from
+ * the given distributions is distributed properly. The stochastic tests are
+ * slow and their false positive rate is not well suited for CI, so they are
+ * currently disabled-by-default and put into 'tests-slow'.
+ */
+
+#define PROB_DISTR_PRIVATE
+
+#include "orconfig.h"
+
+#include "test/test.h"
+
+#include "core/or/or.h"
+
+#include "lib/math/prob_distr.h"
+#include "lib/math/fp.h"
+#include "lib/crypt_ops/crypto_rand.h"
+
+#include <float.h>
+#include <math.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/**
+ * Return floor(d) converted to size_t, as a workaround for complaints
+ * under -Wbad-function-cast for (size_t)floor(d).
+ */
+static size_t
+floor_to_size_t(double d)
+{
+ double integral_d = floor(d);
+ return (size_t)integral_d;
+}
+
+/**
+ * Return ceil(d) converted to size_t, as a workaround for complaints
+ * under -Wbad-function-cast for (size_t)ceil(d).
+ */
+static size_t
+ceil_to_size_t(double d)
+{
+ double integral_d = ceil(d);
+ return (size_t)integral_d;
+}
+
+/*
+ * Geometric(p) distribution, supported on {1, 2, 3, ...}.
+ *
+ * Compute the probability mass function Geom(n; p) of the number of
+ * trials before the first success when success has probability p.
+ */
+static double
+logpmf_geometric(unsigned n, double p)
+{
+ /* This is actually a check against 1, but we do >= so that the compiler
+ does not raise a -Wfloat-equal */
+ if (p >= 1) {
+ if (n == 1)
+ return 0;
+ else
+ return -HUGE_VAL;
+ }
+ return (n - 1)*log1p(-p) + log(p);
+}
+
+/**
+ * Compute the logistic function, translated in output by 1/2:
+ * logistichalf(x) = logistic(x) - 1/2. Well-conditioned on the entire
+ * real plane, with maximum condition number 1 at 0.
+ *
+ * This implementation gives relative error bounded by 5 eps.
+ */
+static double
+logistichalf(double x)
+{
+ /*
+ * Rewrite this with the identity
+ *
+ * 1/(1 + e^{-x}) - 1/2
+ * = (1 - 1/2 - e^{-x}/2)/(1 + e^{-x})
+ * = (1/2 - e^{-x}/2)/(1 + e^{-x})
+ * = (1 - e^{-x})/[2 (1 + e^{-x})]
+ * = -(e^{-x} - 1)/[2 (1 + e^{-x})],
+ *
+ * which we can evaluate by -expm1(-x)/[2 (1 + exp(-x))].
+ *
+ * Suppose exp has error d0, + has error d1, expm1 has error
+ * d2, and / has error d3, so we evaluate
+ *
+ * -(1 + d2) (1 + d3) (e^{-x} - 1)
+ * / [2 (1 + d1) (1 + (1 + d0) e^{-x})].
+ *
+ * In the denominator,
+ *
+ * 1 + (1 + d0) e^{-x}
+ * = 1 + e^{-x} + d0 e^{-x}
+ * = (1 + e^{-x}) (1 + d0 e^{-x}/(1 + e^{-x})),
+ *
+ * so the relative error of the numerator is
+ *
+ * d' = d2 + d3 + d2 d3,
+ * and of the denominator,
+ * d'' = d1 + d0 e^{-x}/(1 + e^{-x}) + d0 d1 e^{-x}/(1 + e^{-x})
+ * = d1 + d0 L(-x) + d0 d1 L(-x),
+ *
+ * where L(-x) is logistic(-x). By Lemma 1 the relative error
+ * of the quotient is bounded by
+ *
+ * 2|d2 + d3 + d2 d3 - d1 - d0 L(x) + d0 d1 L(x)|,
+ *
+ * Since 0 < L(x) < 1, this is bounded by
+ *
+ * 2|d2| + 2|d3| + 2|d2 d3| + 2|d1| + 2|d0| + 2|d0 d1|
+ * <= 4 eps + 2 eps^2.
+ */
+ if (x < log(DBL_EPSILON/8)) {
+ /*
+ * Avoid overflow in e^{-x}. When x < log(eps/4), we
+ * we further have x < logit(eps/4), so that
+ * logistic(x) < eps/4. Hence the relative error of
+ * logistic(x) - 1/2 from -1/2 is bounded by eps/2, and
+ * so the relative error of -1/2 from logistic(x) - 1/2
+ * is bounded by eps.
+ */
+ return -0.5;
+ } else {
+ return -expm1(-x)/(2*(1 + exp(-x)));
+ }
+}
+
+/**
+ * Compute the log of the sum of the exps. Caller should arrange the
+ * array in descending order to minimize error because I don't want to
+ * deal with using temporary space and the one caller in this file
+ * arranges that anyway.
+ *
+ * Warning: This implementation does not handle infinite or NaN inputs
+ * sensibly, because I don't need that here at the moment. (NaN, or
+ * -inf and +inf together, should yield NaN; +inf and finite should
+ * yield +inf; otherwise all -inf should be ignored because exp(-inf) =
+ * 0.)
+ */
+static double
+logsumexp(double *A, size_t n)
+{
+ double maximum, sum;
+ size_t i;
+
+ if (n == 0)
+ return log(0);
+
+ maximum = A[0];
+ for (i = 1; i < n; i++) {
+ if (A[i] > maximum)
+ maximum = A[i];
+ }
+
+ sum = 0;
+ for (i = n; i --> 0;)
+ sum += exp(A[i] - maximum);
+
+ return log(sum) + maximum;
+}
+
+/**
+ * Compute log(1 - e^x). Defined only for negative x so that e^x < 1.
+ * This is the complement of a probability in log space.
+ */
+static double
+log1mexp(double x)
+{
+
+ /*
+ * We want to compute log on [0, 1/2) but log1p on [1/2, +inf),
+ * so partition x at -log(2) = log(1/2).
+ */
+ if (-log(2) < x)
+ return log(-expm1(x));
+ else
+ return log1p(-exp(x));
+}
+
+/*
+ * Tests of numerical errors in computing logit, logistic, and the
+ * various cdfs, sfs, icdfs, and isfs.
+ */
+
+#define arraycount(A) (sizeof(A)/sizeof(A[0]))
+
+/** Return relative error between <b>actual</b> and <b>expected</b>.
+ * Special cases: If <b>expected</b> is zero or infinite, return 1 if
+ * <b>actual</b> is equal to <b>expected</b> and 0 if not, since the
+ * usual notion of relative error is undefined but we only use this
+ * for testing relerr(e, a) <= bound. If either is NaN, return NaN,
+ * which has the property that NaN <= bound is false no matter what
+ * bound is.
+ *
+ * Beware: if you test !(relerr(e, a) > bound), then then the result
+ * is true when a is NaN because NaN > bound is false too. See
+ * CHECK_RELERR for correct use to decide when to report failure.
+ */
+static double
+relerr(double expected, double actual)
+{
+ /*
+ * To silence -Wfloat-equal, we have to test for equality using
+ * inequalities: we have (fabs(expected) <= 0) iff (expected == 0),
+ * and (actual <= expected && actual >= expected) iff actual ==
+ * expected whether expected is zero or infinite.
+ */
+ if (fabs(expected) <= 0 || tor_isinf(expected)) {
+ if (actual <= expected && actual >= expected)
+ return 0;
+ else
+ return 1;
+ } else {
+ return fabs((expected - actual)/expected);
+ }
+}
+
+/** Check that relative error of <b>expected</b> and <b>actual</b> is within
+ * <b>relerr_bound</b>. Caller must arrange to have i and relerr_bound in
+ * scope. */
+#define CHECK_RELERR(expected, actual) do { \
+ double check_expected = (expected); \
+ double check_actual = (actual); \
+ const char *str_expected = #expected; \
+ const char *str_actual = #actual; \
+ double check_relerr = relerr(expected, actual); \
+ if (!(relerr(check_expected, check_actual) <= relerr_bound)) { \
+ log_warn(LD_GENERAL, "%s:%d: case %u: relerr(%s=%.17e, %s=%.17e)" \
+ " = %.17e > %.17e\n", \
+ __func__, __LINE__, (unsigned) i, \
+ str_expected, check_expected, \
+ str_actual, check_actual, \
+ check_relerr, relerr_bound); \
+ ok = false; \
+ } \
+} while (0)
+
+/* Check that a <= b.
+ * Caller must arrange to have i in scope. */
+#define CHECK_LE(a, b) do { \
+ double check_a = (a); \
+ double check_b = (b); \
+ const char *str_a = #a; \
+ const char *str_b = #b; \
+ if (!(check_a <= check_b)) { \
+ log_warn(LD_GENERAL, "%s:%d: case %u: %s=%.17e > %s=%.17e\n", \
+ __func__, __LINE__, (unsigned) i, \
+ str_a, check_a, str_b, check_b); \
+ ok = false; \
+ } \
+} while (0)
+
+/**
+ * Test the logit and logistic functions. Confirm that they agree with
+ * the cdf, sf, icdf, and isf of the standard Logistic distribution.
+ * Confirm that the sampler for the standard logistic distribution maps
+ * [0, 1] into the right subinterval for the inverse transform, for
+ * this implementation.
+ */
+static void
+test_logit_logistic(void *arg)
+{
+ (void) arg;
+
+ static const struct {
+ double x; /* x = logit(p) */
+ double p; /* p = logistic(x) */
+ double phalf; /* p - 1/2 = logistic(x) - 1/2 */
+ } cases[] = {
+ { -HUGE_VAL, 0, -0.5 },
+ { -1000, 0, -0.5 },
+ { -710, 4.47628622567513e-309, -0.5 },
+ { -708, 3.307553003638408e-308, -0.5 },
+ { -2, .11920292202211755, -.3807970779778824 },
+ { -1.0000001, .2689414017088022, -.23105859829119776 },
+ { -1, .2689414213699951, -.23105857863000487 },
+ { -0.9999999, .26894144103118883, -.2310585589688111 },
+ /* see src/test/prob_distr_mpfr_ref.c for computation */
+ { -4.000000000537333e-5, .49999, -1.0000000000010001e-5 },
+ { -4.000000000533334e-5, .49999, -.00001 },
+ { -4.000000108916878e-9, .499999999, -1.0000000272292198e-9 },
+ { -4e-9, .499999999, -1e-9 },
+ { -4e-16, .5, -1e-16 },
+ { -4e-300, .5, -1e-300 },
+ { 0, .5, 0 },
+ { 4e-300, .5, 1e-300 },
+ { 4e-16, .5, 1e-16 },
+ { 3.999999886872274e-9, .500000001, 9.999999717180685e-10 },
+ { 4e-9, .500000001, 1e-9 },
+ { 4.0000000005333336e-5, .50001, .00001 },
+ { 8.000042667076272e-3, .502, .002 },
+ { 0.9999999, .7310585589688111, .2310585589688111 },
+ { 1, .7310585786300049, .23105857863000487 },
+ { 1.0000001, .7310585982911977, .23105859829119774 },
+ { 2, .8807970779778823, .3807970779778824 },
+ { 708, 1, .5 },
+ { 710, 1, .5 },
+ { 1000, 1, .5 },
+ { HUGE_VAL, 1, .5 },
+ };
+ double relerr_bound = 3e-15; /* >10eps */
+ size_t i;
+ bool ok = true;
+
+ for (i = 0; i < arraycount(cases); i++) {
+ double x = cases[i].x;
+ double p = cases[i].p;
+ double phalf = cases[i].phalf;
+
+ /*
+ * cdf is logistic, icdf is logit, and symmetry for
+ * sf/isf.
+ */
+ CHECK_RELERR(logistic(x), cdf_logistic(x, 0, 1));
+ CHECK_RELERR(logistic(-x), sf_logistic(x, 0, 1));
+ CHECK_RELERR(logit(p), icdf_logistic(p, 0, 1));
+ CHECK_RELERR(-logit(p), isf_logistic(p, 0, 1));
+
+ CHECK_RELERR(cdf_logistic(x, 0, 1), cdf_logistic(x*2, 0, 2));
+ CHECK_RELERR(sf_logistic(x, 0, 1), sf_logistic(x*2, 0, 2));
+ CHECK_RELERR(icdf_logistic(p, 0, 1), icdf_logistic(p, 0, 2)/2);
+ CHECK_RELERR(isf_logistic(p, 0, 1), isf_logistic(p, 0, 2)/2);
+
+ CHECK_RELERR(cdf_logistic(x, 0, 1), cdf_logistic(x/2, 0, .5));
+ CHECK_RELERR(sf_logistic(x, 0, 1), sf_logistic(x/2, 0, .5));
+ CHECK_RELERR(icdf_logistic(p, 0, 1), icdf_logistic(p, 0,.5)*2);
+ CHECK_RELERR(isf_logistic(p, 0, 1), isf_logistic(p, 0, .5)*2);
+
+ CHECK_RELERR(cdf_logistic(x, 0, 1), cdf_logistic(x*2 + 1, 1, 2));
+ CHECK_RELERR(sf_logistic(x, 0, 1), sf_logistic(x*2 + 1, 1, 2));
+
+ /*
+ * For p near 0 and p near 1/2, the arithmetic of
+ * translating by 1 loses precision.
+ */
+ if (fabs(p) > DBL_EPSILON && fabs(p) < 0.4) {
+ CHECK_RELERR(icdf_logistic(p, 0, 1),
+ (icdf_logistic(p, 1, 2) - 1)/2);
+ CHECK_RELERR(isf_logistic(p, 0, 1),
+ (isf_logistic(p, 1, 2) - 1)/2);
+ }
+
+ CHECK_RELERR(p, logistic(x));
+ CHECK_RELERR(phalf, logistichalf(x));
+
+ /*
+ * On the interior floating-point numbers, either logit or
+ * logithalf had better give the correct answer.
+ *
+ * For probabilities near 0, we can get much finer resolution with
+ * logit, and for probabilities near 1/2, we can get much finer
+ * resolution with logithalf by representing them using p - 1/2.
+ *
+ * E.g., we can write -.00001 for phalf, and .49999 for p, but the
+ * difference 1/2 - .00001 gives 1.0000000000010001e-5 in binary64
+ * arithmetic. So test logit(.49999) which should give the same
+ * answer as logithalf(-1.0000000000010001e-5), namely
+ * -4.000000000537333e-5, and also test logithalf(-.00001) which
+ * gives -4.000000000533334e-5 instead -- but don't expect
+ * logit(.49999) to give -4.000000000533334e-5 even though it looks
+ * like 1/2 - .00001.
+ *
+ * A naive implementation of logit will just use log(p/(1 - p)) and
+ * give the answer -4.000000000551673e-05 for .49999, which is
+ * wrong in a lot of digits, which happens because log is
+ * ill-conditioned near 1 and thus amplifies whatever relative
+ * error we made in computing p/(1 - p).
+ */
+ if ((0 < p && p < 1) || tor_isinf(x)) {
+ if (phalf >= p - 0.5 && phalf <= p - 0.5)
+ CHECK_RELERR(x, logit(p));
+ if (p >= 0.5 + phalf && p <= 0.5 + phalf)
+ CHECK_RELERR(x, logithalf(phalf));
+ }
+
+ CHECK_RELERR(-phalf, logistichalf(-x));
+ if (fabs(phalf) < 0.5 || tor_isinf(x))
+ CHECK_RELERR(-x, logithalf(-phalf));
+ if (p < 1 || tor_isinf(x)) {
+ CHECK_RELERR(1 - p, logistic(-x));
+ if (p > .75 || tor_isinf(x))
+ CHECK_RELERR(-x, logit(1 - p));
+ } else {
+ CHECK_LE(logistic(-x), 1e-300);
+ }
+ }
+
+ for (i = 0; i <= 100; i++) {
+ double p0 = (double)i/100;
+
+ CHECK_RELERR(logit(p0/(1 + M_E)), sample_logistic(0, 0, p0));
+ CHECK_RELERR(-logit(p0/(1 + M_E)), sample_logistic(1, 0, p0));
+ CHECK_RELERR(logithalf(p0*(0.5 - 1/(1 + M_E))),
+ sample_logistic(0, 1, p0));
+ CHECK_RELERR(-logithalf(p0*(0.5 - 1/(1 + M_E))),
+ sample_logistic(1, 1, p0));
+ }
+
+ if (!ok)
+ printf("fail logit/logistic / logistic cdf/sf\n");
+
+ tt_assert(ok);
+
+ done:
+ ;
+}
+
+/**
+ * Test the cdf, sf, icdf, and isf of the LogLogistic distribution.
+ */
+static void
+test_log_logistic(void *arg)
+{
+ (void) arg;
+
+ static const struct {
+ /* x is a point in the support of the LogLogistic distribution */
+ double x;
+ /* 'p' is the probability that a random variable X for a given LogLogistic
+ * probability ditribution will take value less-or-equal to x */
+ double p;
+ /* 'np' is the probability that a random variable X for a given LogLogistic
+ * probability distribution will take value greater-or-equal to x. */
+ double np;
+ } cases[] = {
+ { 0, 0, 1 },
+ { 1e-300, 1e-300, 1 },
+ { 1e-17, 1e-17, 1 },
+ { 1e-15, 1e-15, .999999999999999 },
+ { .1, .09090909090909091, .90909090909090909 },
+ { .25, .2, .8 },
+ { .5, .33333333333333333, .66666666666666667 },
+ { .75, .42857142857142855, .5714285714285714 },
+ { .9999, .49997499874993756, .5000250012500626 },
+ { .99999999, .49999999749999996, .5000000025 },
+ { .999999999999999, .49999999999999994, .5000000000000002 },
+ { 1, .5, .5 },
+ };
+ double relerr_bound = 3e-15;
+ size_t i;
+ bool ok = true;
+
+ for (i = 0; i < arraycount(cases); i++) {
+ double x = cases[i].x;
+ double p = cases[i].p;
+ double np = cases[i].np;
+
+ CHECK_RELERR(p, cdf_log_logistic(x, 1, 1));
+ CHECK_RELERR(p, cdf_log_logistic(x/2, .5, 1));
+ CHECK_RELERR(p, cdf_log_logistic(x*2, 2, 1));
+ CHECK_RELERR(p, cdf_log_logistic(sqrt(x), 1, 2));
+ CHECK_RELERR(p, cdf_log_logistic(sqrt(x)/2, .5, 2));
+ CHECK_RELERR(p, cdf_log_logistic(sqrt(x)*2, 2, 2));
+ if (2*sqrt(DBL_MIN) < x) {
+ CHECK_RELERR(p, cdf_log_logistic(x*x, 1, .5));
+ CHECK_RELERR(p, cdf_log_logistic(x*x/2, .5, .5));
+ CHECK_RELERR(p, cdf_log_logistic(x*x*2, 2, .5));
+ }
+
+ CHECK_RELERR(np, sf_log_logistic(x, 1, 1));
+ CHECK_RELERR(np, sf_log_logistic(x/2, .5, 1));
+ CHECK_RELERR(np, sf_log_logistic(x*2, 2, 1));
+ CHECK_RELERR(np, sf_log_logistic(sqrt(x), 1, 2));
+ CHECK_RELERR(np, sf_log_logistic(sqrt(x)/2, .5, 2));
+ CHECK_RELERR(np, sf_log_logistic(sqrt(x)*2, 2, 2));
+ if (2*sqrt(DBL_MIN) < x) {
+ CHECK_RELERR(np, sf_log_logistic(x*x, 1, .5));
+ CHECK_RELERR(np, sf_log_logistic(x*x/2, .5, .5));
+ CHECK_RELERR(np, sf_log_logistic(x*x*2, 2, .5));
+ }
+
+ CHECK_RELERR(np, cdf_log_logistic(1/x, 1, 1));
+ CHECK_RELERR(np, cdf_log_logistic(1/(2*x), .5, 1));
+ CHECK_RELERR(np, cdf_log_logistic(2/x, 2, 1));
+ CHECK_RELERR(np, cdf_log_logistic(1/sqrt(x), 1, 2));
+ CHECK_RELERR(np, cdf_log_logistic(1/(2*sqrt(x)), .5, 2));
+ CHECK_RELERR(np, cdf_log_logistic(2/sqrt(x), 2, 2));
+ if (2*sqrt(DBL_MIN) < x && x < 1/(2*sqrt(DBL_MIN))) {
+ CHECK_RELERR(np, cdf_log_logistic(1/(x*x), 1, .5));
+ CHECK_RELERR(np, cdf_log_logistic(1/(2*x*x), .5, .5));
+ CHECK_RELERR(np, cdf_log_logistic(2/(x*x), 2, .5));
+ }
+
+ CHECK_RELERR(p, sf_log_logistic(1/x, 1, 1));
+ CHECK_RELERR(p, sf_log_logistic(1/(2*x), .5, 1));
+ CHECK_RELERR(p, sf_log_logistic(2/x, 2, 1));
+ CHECK_RELERR(p, sf_log_logistic(1/sqrt(x), 1, 2));
+ CHECK_RELERR(p, sf_log_logistic(1/(2*sqrt(x)), .5, 2));
+ CHECK_RELERR(p, sf_log_logistic(2/sqrt(x), 2, 2));
+ if (2*sqrt(DBL_MIN) < x && x < 1/(2*sqrt(DBL_MIN))) {
+ CHECK_RELERR(p, sf_log_logistic(1/(x*x), 1, .5));
+ CHECK_RELERR(p, sf_log_logistic(1/(2*x*x), .5, .5));
+ CHECK_RELERR(p, sf_log_logistic(2/(x*x), 2, .5));
+ }
+
+ CHECK_RELERR(x, icdf_log_logistic(p, 1, 1));
+ CHECK_RELERR(x/2, icdf_log_logistic(p, .5, 1));
+ CHECK_RELERR(x*2, icdf_log_logistic(p, 2, 1));
+ CHECK_RELERR(x, icdf_log_logistic(p, 1, 1));
+ CHECK_RELERR(sqrt(x)/2, icdf_log_logistic(p, .5, 2));
+ CHECK_RELERR(sqrt(x)*2, icdf_log_logistic(p, 2, 2));
+ CHECK_RELERR(sqrt(x), icdf_log_logistic(p, 1, 2));
+ CHECK_RELERR(x*x/2, icdf_log_logistic(p, .5, .5));
+ CHECK_RELERR(x*x*2, icdf_log_logistic(p, 2, .5));
+
+ if (np < .9) {
+ CHECK_RELERR(x, isf_log_logistic(np, 1, 1));
+ CHECK_RELERR(x/2, isf_log_logistic(np, .5, 1));
+ CHECK_RELERR(x*2, isf_log_logistic(np, 2, 1));
+ CHECK_RELERR(sqrt(x), isf_log_logistic(np, 1, 2));
+ CHECK_RELERR(sqrt(x)/2, isf_log_logistic(np, .5, 2));
+ CHECK_RELERR(sqrt(x)*2, isf_log_logistic(np, 2, 2));
+ CHECK_RELERR(x*x, isf_log_logistic(np, 1, .5));
+ CHECK_RELERR(x*x/2, isf_log_logistic(np, .5, .5));
+ CHECK_RELERR(x*x*2, isf_log_logistic(np, 2, .5));
+
+ CHECK_RELERR(1/x, icdf_log_logistic(np, 1, 1));
+ CHECK_RELERR(1/(2*x), icdf_log_logistic(np, .5, 1));
+ CHECK_RELERR(2/x, icdf_log_logistic(np, 2, 1));
+ CHECK_RELERR(1/sqrt(x), icdf_log_logistic(np, 1, 2));
+ CHECK_RELERR(1/(2*sqrt(x)),
+ icdf_log_logistic(np, .5, 2));
+ CHECK_RELERR(2/sqrt(x), icdf_log_logistic(np, 2, 2));
+ CHECK_RELERR(1/(x*x), icdf_log_logistic(np, 1, .5));
+ CHECK_RELERR(1/(2*x*x), icdf_log_logistic(np, .5, .5));
+ CHECK_RELERR(2/(x*x), icdf_log_logistic(np, 2, .5));
+ }
+
+ CHECK_RELERR(1/x, isf_log_logistic(p, 1, 1));
+ CHECK_RELERR(1/(2*x), isf_log_logistic(p, .5, 1));
+ CHECK_RELERR(2/x, isf_log_logistic(p, 2, 1));
+ CHECK_RELERR(1/sqrt(x), isf_log_logistic(p, 1, 2));
+ CHECK_RELERR(1/(2*sqrt(x)), isf_log_logistic(p, .5, 2));
+ CHECK_RELERR(2/sqrt(x), isf_log_logistic(p, 2, 2));
+ CHECK_RELERR(1/(x*x), isf_log_logistic(p, 1, .5));
+ CHECK_RELERR(1/(2*x*x), isf_log_logistic(p, .5, .5));
+ CHECK_RELERR(2/(x*x), isf_log_logistic(p, 2, .5));
+ }
+
+ for (i = 0; i <= 100; i++) {
+ double p0 = (double)i/100;
+
+ CHECK_RELERR(0.5*p0/(1 - 0.5*p0), sample_log_logistic(0, p0));
+ CHECK_RELERR((1 - 0.5*p0)/(0.5*p0),
+ sample_log_logistic(1, p0));
+ }
+
+ if (!ok)
+ printf("fail log logistic cdf/sf\n");
+
+ tt_assert(ok);
+
+ done:
+ ;
+}
+
+/**
+ * Test the cdf, sf, icdf, isf of the Weibull distribution.
+ */
+static void
+test_weibull(void *arg)
+{
+ (void) arg;
+
+ static const struct {
+ /* x is a point in the support of the Weibull distribution */
+ double x;
+ /* 'p' is the probability that a random variable X for a given Weibull
+ * probability ditribution will take value less-or-equal to x */
+ double p;
+ /* 'np' is the probability that a random variable X for a given Weibull
+ * probability distribution will take value greater-or-equal to x. */
+ double np;
+ } cases[] = {
+ { 0, 0, 1 },
+ { 1e-300, 1e-300, 1 },
+ { 1e-17, 1e-17, 1 },
+ { .1, .09516258196404043, .9048374180359595 },
+ { .5, .3934693402873666, .6065306597126334 },
+ { .6931471805599453, .5, .5 },
+ { 1, .6321205588285577, .36787944117144233 },
+ { 10, .9999546000702375, 4.5399929762484854e-5 },
+ { 36, .9999999999999998, 2.319522830243569e-16 },
+ { 37, .9999999999999999, 8.533047625744066e-17 },
+ { 38, 1, 3.1391327920480296e-17 },
+ { 100, 1, 3.720075976020836e-44 },
+ { 708, 1, 3.307553003638408e-308 },
+ { 710, 1, 4.47628622567513e-309 },
+ { 1000, 1, 0 },
+ { HUGE_VAL, 1, 0 },
+ };
+ double relerr_bound = 3e-15;
+ size_t i;
+ bool ok = true;
+
+ for (i = 0; i < arraycount(cases); i++) {
+ double x = cases[i].x;
+ double p = cases[i].p;
+ double np = cases[i].np;
+
+ CHECK_RELERR(p, cdf_weibull(x, 1, 1));
+ CHECK_RELERR(p, cdf_weibull(x/2, .5, 1));
+ CHECK_RELERR(p, cdf_weibull(x*2, 2, 1));
+ /* For 0 < x < sqrt(DBL_MIN), x^2 loses lots of bits. */
+ if (x <= 0 ||
+ sqrt(DBL_MIN) <= x) {
+ CHECK_RELERR(p, cdf_weibull(x*x, 1, .5));
+ CHECK_RELERR(p, cdf_weibull(x*x/2, .5, .5));
+ CHECK_RELERR(p, cdf_weibull(x*x*2, 2, .5));
+ }
+ CHECK_RELERR(p, cdf_weibull(sqrt(x), 1, 2));
+ CHECK_RELERR(p, cdf_weibull(sqrt(x)/2, .5, 2));
+ CHECK_RELERR(p, cdf_weibull(sqrt(x)*2, 2, 2));
+ CHECK_RELERR(np, sf_weibull(x, 1, 1));
+ CHECK_RELERR(np, sf_weibull(x/2, .5, 1));
+ CHECK_RELERR(np, sf_weibull(x*2, 2, 1));
+ CHECK_RELERR(np, sf_weibull(x*x, 1, .5));
+ CHECK_RELERR(np, sf_weibull(x*x/2, .5, .5));
+ CHECK_RELERR(np, sf_weibull(x*x*2, 2, .5));
+ if (x >= 10) {
+ /*
+ * exp amplifies the error of sqrt(x)^2
+ * proportionally to exp(x); for large inputs
+ * this is significant.
+ */
+ double t = -expm1(-x*(2*DBL_EPSILON + DBL_EPSILON));
+ relerr_bound = t + DBL_EPSILON + t*DBL_EPSILON;
+ if (relerr_bound < 3e-15)
+ /*
+ * The tests are written only to 16
+ * decimal places anyway even if your
+ * `double' is, say, i387 binary80, for
+ * whatever reason.
+ */
+ relerr_bound = 3e-15;
+ CHECK_RELERR(np, sf_weibull(sqrt(x), 1, 2));
+ CHECK_RELERR(np, sf_weibull(sqrt(x)/2, .5, 2));
+ CHECK_RELERR(np, sf_weibull(sqrt(x)*2, 2, 2));
+ }
+
+ if (p <= 0.75) {
+ /*
+ * For p near 1, not enough precision near 1 to
+ * recover x.
+ */
+ CHECK_RELERR(x, icdf_weibull(p, 1, 1));
+ CHECK_RELERR(x/2, icdf_weibull(p, .5, 1));
+ CHECK_RELERR(x*2, icdf_weibull(p, 2, 1));
+ }
+ if (p >= 0.25 && !tor_isinf(x) && np > 0) {
+ /*
+ * For p near 0, not enough precision in np
+ * near 1 to recover x. For 0, isf gives inf,
+ * even if p is precise enough for the icdf to
+ * work.
+ */
+ CHECK_RELERR(x, isf_weibull(np, 1, 1));
+ CHECK_RELERR(x/2, isf_weibull(np, .5, 1));
+ CHECK_RELERR(x*2, isf_weibull(np, 2, 1));
+ }
+ }
+
+ for (i = 0; i <= 100; i++) {
+ double p0 = (double)i/100;
+
+ CHECK_RELERR(3*sqrt(-log(p0/2)), sample_weibull(0, p0, 3, 2));
+ CHECK_RELERR(3*sqrt(-log1p(-p0/2)),
+ sample_weibull(1, p0, 3, 2));
+ }
+
+ if (!ok)
+ printf("fail Weibull cdf/sf\n");
+
+ tt_assert(ok);
+
+ done:
+ ;
+}
+
+/**
+ * Test the cdf, sf, icdf, and isf of the generalized Pareto
+ * distribution.
+ */
+static void
+test_genpareto(void *arg)
+{
+ (void) arg;
+
+ struct {
+ /* xi is the 'xi' parameter of the generalized Pareto distribution, and the
+ * rest are the same as in the above tests */
+ double xi, x, p, np;
+ } cases[] = {
+ { 0, 0, 0, 1 },
+ { 1e-300, .004, 3.992010656008528e-3, .9960079893439915 },
+ { 1e-300, .1, .09516258196404043, .9048374180359595 },
+ { 1e-300, 1, .6321205588285577, .36787944117144233 },
+ { 1e-300, 10, .9999546000702375, 4.5399929762484854e-5 },
+ { 1e-200, 1e-16, 9.999999999999999e-17, .9999999999999999 },
+ { 1e-16, 1e-200, 9.999999999999998e-201, 1 },
+ { 1e-16, 1e-16, 1e-16, 1 },
+ { 1e-16, .004, 3.992010656008528e-3, .9960079893439915 },
+ { 1e-16, .1, .09516258196404043, .9048374180359595 },
+ { 1e-16, 1, .6321205588285577, .36787944117144233 },
+ { 1e-16, 10, .9999546000702375, 4.539992976248509e-5 },
+ { 1e-10, 1e-6, 9.999995000001667e-7, .9999990000005 },
+ { 1e-8, 1e-8, 9.999999950000001e-9, .9999999900000001 },
+ { 1, 1e-300, 1e-300, 1 },
+ { 1, 1e-16, 1e-16, .9999999999999999 },
+ { 1, .1, .09090909090909091, .9090909090909091 },
+ { 1, 1, .5, .5 },
+ { 1, 10, .9090909090909091, .0909090909090909 },
+ { 1, 100, .9900990099009901, .0099009900990099 },
+ { 1, 1000, .999000999000999, 9.990009990009992e-4 },
+ { 10, 1e-300, 1e-300, 1 },
+ { 10, 1e-16, 9.999999999999995e-17, .9999999999999999 },
+ { 10, .1, .06696700846319258, .9330329915368074 },
+ { 10, 1, .21320655780322778, .7867934421967723 },
+ { 10, 10, .3696701667040189, .6303298332959811 },
+ { 10, 100, .49886285755007337, .5011371424499267 },
+ { 10, 1000, .6018968102992647, .3981031897007353 },
+ };
+ double xi_array[] = { -1.5, -1, -1e-30, 0, 1e-30, 1, 1.5 };
+ size_t i, j;
+ double relerr_bound = 3e-15;
+ bool ok = true;
+
+ for (i = 0; i < arraycount(cases); i++) {
+ double xi = cases[i].xi;
+ double x = cases[i].x;
+ double p = cases[i].p;
+ double np = cases[i].np;
+
+ CHECK_RELERR(p, cdf_genpareto(x, 0, 1, xi));
+ CHECK_RELERR(p, cdf_genpareto(x*2, 0, 2, xi));
+ CHECK_RELERR(p, cdf_genpareto(x/2, 0, .5, xi));
+ CHECK_RELERR(np, sf_genpareto(x, 0, 1, xi));
+ CHECK_RELERR(np, sf_genpareto(x*2, 0, 2, xi));
+ CHECK_RELERR(np, sf_genpareto(x/2, 0, .5, xi));
+
+ if (p < .5) {
+ CHECK_RELERR(x, icdf_genpareto(p, 0, 1, xi));
+ CHECK_RELERR(x*2, icdf_genpareto(p, 0, 2, xi));
+ CHECK_RELERR(x/2, icdf_genpareto(p, 0, .5, xi));
+ }
+ if (np < .5) {
+ CHECK_RELERR(x, isf_genpareto(np, 0, 1, xi));
+ CHECK_RELERR(x*2, isf_genpareto(np, 0, 2, xi));
+ CHECK_RELERR(x/2, isf_genpareto(np, 0, .5, xi));
+ }
+ }
+
+ for (i = 0; i < arraycount(xi_array); i++) {
+ for (j = 0; j <= 100; j++) {
+ double p0 = (j == 0 ? 2*DBL_MIN : (double)j/100);
+
+ /* This is actually a check against 0, but we do <= so that the compiler
+ does not raise a -Wfloat-equal */
+ if (fabs(xi_array[i]) <= 0) {
+ /*
+ * When xi == 0, the generalized Pareto
+ * distribution reduces to an
+ * exponential distribution.
+ */
+ CHECK_RELERR(-log(p0/2),
+ sample_genpareto(0, p0, 0));
+ CHECK_RELERR(-log1p(-p0/2),
+ sample_genpareto(1, p0, 0));
+ } else {
+ CHECK_RELERR(expm1(-xi_array[i]*log(p0/2))/xi_array[i],
+ sample_genpareto(0, p0, xi_array[i]));
+ CHECK_RELERR((j == 0 ? DBL_MIN :
+ expm1(-xi_array[i]*log1p(-p0/2))/xi_array[i]),
+ sample_genpareto(1, p0, xi_array[i]));
+ }
+
+ CHECK_RELERR(isf_genpareto(p0/2, 0, 1, xi_array[i]),
+ sample_genpareto(0, p0, xi_array[i]));
+ CHECK_RELERR(icdf_genpareto(p0/2, 0, 1, xi_array[i]),
+ sample_genpareto(1, p0, xi_array[i]));
+ }
+ }
+
+ tt_assert(ok);
+
+ done:
+ ;
+}
+
+/**
+ * Test the deterministic sampler for uniform distribution on [a, b].
+ *
+ * This currently only tests whether the outcome lies within [a, b].
+ */
+static void
+test_uniform_interval(void *arg)
+{
+ (void) arg;
+ struct {
+ /* Sample from a uniform distribution with parameters 'a' and 'b', using
+ * 't' as the sampling index. */
+ double t, a, b;
+ } cases[] = {
+ { 0, 0, 0 },
+ { 0, 0, 1 },
+ { 0, 1.0000000000000007, 3.999999999999995 },
+ { 0, 4000, 4000 },
+ { 0.42475836677491291, 4000, 4000 },
+ { 0, -DBL_MAX, DBL_MAX },
+ { 0.25, -DBL_MAX, DBL_MAX },
+ { 0.5, -DBL_MAX, DBL_MAX },
+ };
+ size_t i = 0;
+ bool ok = true;
+
+ for (i = 0; i < arraycount(cases); i++) {
+ double t = cases[i].t;
+ double a = cases[i].a;
+ double b = cases[i].b;
+
+ CHECK_LE(a, sample_uniform_interval(t, a, b));
+ CHECK_LE(sample_uniform_interval(t, a, b), b);
+
+ CHECK_LE(a, sample_uniform_interval(1 - t, a, b));
+ CHECK_LE(sample_uniform_interval(1 - t, a, b), b);
+
+ CHECK_LE(sample_uniform_interval(t, -b, -a), -a);
+ CHECK_LE(-b, sample_uniform_interval(t, -b, -a));
+
+ CHECK_LE(sample_uniform_interval(1 - t, -b, -a), -a);
+ CHECK_LE(-b, sample_uniform_interval(1 - t, -b, -a));
+ }
+
+ tt_assert(ok);
+
+ done:
+ ;
+}
+
+/********************** Stochastic tests ****************************/
+
+/*
+ * Psi test, sometimes also called G-test. The psi test statistic,
+ * suitably scaled, has chi^2 distribution, but the psi test tends to
+ * have better statistical power in practice to detect deviations than
+ * the chi^2 test does. (The chi^2 test statistic is the first term of
+ * the Taylor expansion of the psi test statistic.) The psi test is
+ * generic, for any CDF; particular distributions might have higher-
+ * power tests to distinguish them from predictable deviations or bugs.
+ *
+ * We choose the psi critical value so that a single psi test has
+ * probability below alpha = 1% of spuriously failing even if all the
+ * code is correct. But the false positive rate for a suite of n tests
+ * is higher: 1 - Binom(0; n, alpha) = 1 - (1 - alpha)^n. For n = 10,
+ * this is about 10%, and for n = 100 it is well over 50%.
+ *
+ * We can drive it down by running each test twice, and accepting it if
+ * it passes at least once; in that case, it is as if we used Binom(2;
+ * 2, alpha) = alpha^2 as the false positive rate for each test, and
+ * for n = 10 tests, it would be 0.1%, and for n = 100 tests, still
+ * only 1%.
+ *
+ * The critical value for a chi^2 distribution with 100 degrees of
+ * freedom and false positive rate alpha = 1% was taken from:
+ *
+ * NIST/SEMATECH e-Handbook of Statistical Methods, Section
+ * 1.3.6.7.4 `Critical Values of the Chi-Square Distribution',
+ * <http://www.itl.nist.gov/div898/handbook/eda/section3/eda3674.htm>,
+ * retrieved 2018-10-28.
+ */
+
+static const size_t NSAMPLES = 100000;
+/* Number of chances we give to the test to succeed. */
+static const unsigned NTRIALS = 2;
+/* Number of times we want the test to pass per NTRIALS. */
+static const unsigned NPASSES_MIN = 1;
+
+#define PSI_DF 100 /* degrees of freedom */
+static const double PSI_CRITICAL = 135.807; /* critical value, alpha = .01 */
+
+/**
+ * Perform a psi test on an array of sample counts, C, adding up to N
+ * samples, and an array of log expected probabilities, logP,
+ * representing the null hypothesis for the distribution of samples
+ * counted. Return false if the psi test rejects the null hypothesis,
+ * true if otherwise.
+ */
+static bool
+psi_test(const size_t C[PSI_DF], const double logP[PSI_DF], size_t N)
+{
+ double psi = 0;
+ double c = 0; /* Kahan compensation */
+ double t, u;
+ size_t i;
+
+ for (i = 0; i < PSI_DF; i++) {
+ /*
+ * c*log(c/(n*p)) = (1/n) * f*log(f/p) where f = c/n is
+ * the frequency, and f*log(f/p) ---> 0 as f ---> 0, so
+ * this is a reasonable choice. Further, any mass that
+ * _fails_ to turn up in this bin will inflate another
+ * bin instead, so we don't really lose anything by
+ * ignoring empty bins even if they have high
+ * probability.
+ */
+ if (C[i] == 0)
+ continue;
+ t = C[i]*(log((double)C[i]/N) - logP[i]) - c;
+ u = psi + t;
+ c = (u - psi) - t;
+ psi = u;
+ }
+ psi *= 2;
+
+ return psi <= PSI_CRITICAL;
+}
+
+static bool
+test_stochastic_geometric_impl(double p)
+{
+ const struct geometric geometric = {
+ .base = GEOMETRIC(geometric),
+ .p = p,
+ };
+ double logP[PSI_DF] = {0};
+ unsigned ntry = NTRIALS, npass = 0;
+ unsigned i;
+ size_t j;
+
+ /* Compute logP[i] = Geom(i + 1; p). */
+ for (i = 0; i < PSI_DF - 1; i++)
+ logP[i] = logpmf_geometric(i + 1, p);
+
+ /* Compute logP[n-1] = log (1 - (P[0] + P[1] + ... + P[n-2])). */
+ logP[PSI_DF - 1] = log1mexp(logsumexp(logP, PSI_DF - 1));
+
+ while (ntry --> 0) {
+ size_t C[PSI_DF] = {0};
+
+ for (j = 0; j < NSAMPLES; j++) {
+ double n_tmp = dist_sample(&geometric.base);
+
+ /* Must be an integer. (XXX -Wfloat-equal) */
+ tor_assert(ceil(n_tmp) <= n_tmp && ceil(n_tmp) >= n_tmp);
+
+ /* Must be a positive integer. */
+ tor_assert(n_tmp >= 1);
+
+ /* Probability of getting a value in the billions is negligible. */
+ tor_assert(n_tmp <= (double)UINT_MAX);
+
+ unsigned n = (unsigned) n_tmp;
+
+ if (n > PSI_DF)
+ n = PSI_DF;
+ C[n - 1]++;
+ }
+
+ if (psi_test(C, logP, NSAMPLES)) {
+ if (++npass >= NPASSES_MIN)
+ break;
+ }
+ }
+
+ if (npass >= NPASSES_MIN) {
+ /* printf("pass %s sampler\n", "geometric"); */
+ return true;
+ } else {
+ printf("fail %s sampler\n", "geometric");
+ return false;
+ }
+}
+
+/**
+ * Divide the support of <b>dist</b> into histogram bins in <b>logP</b>. Start
+ * at the 1st percentile and ending at the 99th percentile. Pick the bin
+ * boundaries using linear interpolation so that they are uniformly spaced.
+ *
+ * In each bin logP[i] we insert the expected log-probability that a sampled
+ * value will fall into that bin. We will use this as the null hypothesis of
+ * the psi test.
+ *
+ * Set logP[i] = log(CDF(x_i) - CDF(x_{i-1})), where x_-1 = -inf, x_n =
+ * +inf, and x_i = i*(hi - lo)/(n - 2).
+ */
+static void
+bin_cdfs(const struct dist *dist, double lo, double hi, double *logP, size_t n)
+{
+#define CDF(x) dist_cdf(dist, x)
+#define SF(x) dist_sf(dist, x)
+ const double w = (hi - lo)/(n - 2);
+ double halfway = dist_icdf(dist, 0.5);
+ double x_0, x_1;
+ size_t i;
+ size_t n2 = ceil_to_size_t((halfway - lo)/w);
+
+ tor_assert(lo <= halfway);
+ tor_assert(halfway <= hi);
+ tor_assert(n2 <= n);
+
+ x_1 = lo;
+ logP[0] = log(CDF(x_1) - 0); /* 0 = CDF(-inf) */
+ for (i = 1; i < n2; i++) {
+ x_0 = x_1;
+ /* do the linear interpolation */
+ x_1 = (i <= n/2 ? lo + i*w : hi - (n - 2 - i)*w);
+ /* set the expected log-probability */
+ logP[i] = log(CDF(x_1) - CDF(x_0));
+ }
+ x_0 = hi;
+ logP[n - 1] = log(SF(x_0) - 0); /* 0 = SF(+inf) = 1 - CDF(+inf) */
+
+ /* In this loop we are filling out the high part of the array. We are using
+ * SF because in these cases the CDF is near 1 where precision is lower. So
+ * instead we are using SF near 0 where the precision is higher. We have
+ * SF(t) = 1 - CDF(t). */
+ for (i = 1; i < n - n2; i++) {
+ x_1 = x_0;
+ /* do the linear interpolation */
+ x_0 = (i <= n/2 ? hi - i*w : lo + (n - 2 - i)*w);
+ /* set the expected log-probability */
+ logP[n - i - 1] = log(SF(x_0) - SF(x_1));
+ }
+#undef SF
+#undef CDF
+}
+
+/**
+ * Draw NSAMPLES samples from dist, counting the number of samples x in
+ * the ith bin C[i] if x_{i-1} <= x < x_i, where x_-1 = -inf, x_n =
+ * +inf, and x_i = i*(hi - lo)/(n - 2).
+ */
+static void
+bin_samples(const struct dist *dist, double lo, double hi, size_t *C, size_t n)
+{
+ const double w = (hi - lo)/(n - 2);
+ size_t i;
+
+ for (i = 0; i < NSAMPLES; i++) {
+ double x = dist_sample(dist);
+ size_t bin;
+
+ if (x < lo)
+ bin = 0;
+ else if (x < hi)
+ bin = 1 + floor_to_size_t((x - lo)/w);
+ else
+ bin = n - 1;
+ tor_assert(bin < n);
+ C[bin]++;
+ }
+}
+
+/**
+ * Carry out a Psi test on <b>dist</b>.
+ *
+ * Sample NSAMPLES from dist, putting them in bins from -inf to lo to
+ * hi to +inf, and apply up to two psi tests. True if at least one psi
+ * test passes; false if not. False positive rate should be bounded by
+ * 0.01^2 = 0.0001.
+ */
+static bool
+test_psi_dist_sample(const struct dist *dist)
+{
+ double logP[PSI_DF] = {0};
+ unsigned ntry = NTRIALS, npass = 0;
+ double lo = dist_icdf(dist, 1/(double)(PSI_DF + 2));
+ double hi = dist_isf(dist, 1/(double)(PSI_DF + 2));
+
+ /* Create the null hypothesis in logP */
+ bin_cdfs(dist, lo, hi, logP, PSI_DF);
+
+ /* Now run the test */
+ while (ntry --> 0) {
+ size_t C[PSI_DF] = {0};
+ bin_samples(dist, lo, hi, C, PSI_DF);
+ if (psi_test(C, logP, NSAMPLES)) {
+ if (++npass >= NPASSES_MIN)
+ break;
+ }
+ }
+
+ /* Did we fail or succeed? */
+ if (npass >= NPASSES_MIN) {
+ /* printf("pass %s sampler\n", dist_name(dist));*/
+ return true;
+ } else {
+ printf("fail %s sampler\n", dist_name(dist));
+ return false;
+ }
+}
+
+/* This is the seed of the deterministic randomness */
+static uint8_t rng_seed[16];
+static crypto_xof_t *rng_xof = NULL;
+
+/** Initialize the seed of the deterministic randomness. */
+static void
+init_deterministic_rand(void)
+{
+ crypto_rand((char*)rng_seed, sizeof(rng_seed));
+ crypto_xof_free(rng_xof);
+ rng_xof = crypto_xof_new();
+ crypto_xof_add_bytes(rng_xof, rng_seed, sizeof(rng_seed));
+}
+
+static void
+teardown_deterministic_rand(void)
+{
+ crypto_xof_free(rng_xof);
+}
+
+static void
+dump_seed(void)
+{
+ printf("\n"
+ "NOTE: This is a stochastic test, and we expect it to fail from\n"
+ "time to time, with some low probability. If you see it fail more\n"
+ "than one trial in 100, though, please tell us.\n\n"
+ "Seed: %s\n",
+ hex_str((const char*)rng_seed, sizeof(rng_seed)));
+}
+
+/** Produce deterministic randomness for the stochastic tests using the global
+ * deterministic_rand_counter seed
+ *
+ * This function produces deterministic data over multiple calls iff it's
+ * called in the same call order with the same 'n' parameter (which is the
+ * case for the psi test). If not, outputs will deviate. */
+static void
+crypto_rand_deterministic(char *out, size_t n)
+{
+ /* Use a XOF to squeeze bytes out of that silly counter */
+ tor_assert(rng_xof);
+ crypto_xof_squeeze_bytes(rng_xof, (uint8_t*)out, n);
+}
+
+static void
+test_stochastic_uniform(void *arg)
+{
+ (void) arg;
+
+ const struct uniform uniform01 = {
+ .base = UNIFORM(uniform01),
+ .a = 0,
+ .b = 1,
+ };
+ const struct uniform uniform_pos = {
+ .base = UNIFORM(uniform_pos),
+ .a = 1.23,
+ .b = 4.56,
+ };
+ const struct uniform uniform_neg = {
+ .base = UNIFORM(uniform_neg),
+ .a = -10,
+ .b = -1,
+ };
+ const struct uniform uniform_cross = {
+ .base = UNIFORM(uniform_cross),
+ .a = -1.23,
+ .b = 4.56,
+ };
+ const struct uniform uniform_subnormal = {
+ .base = UNIFORM(uniform_subnormal),
+ .a = 4e-324,
+ .b = 4e-310,
+ };
+ const struct uniform uniform_subnormal_cross = {
+ .base = UNIFORM(uniform_subnormal_cross),
+ .a = -4e-324,
+ .b = 4e-310,
+ };
+ bool ok = true, tests_failed = true;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok &= test_psi_dist_sample(&uniform01.base);
+ ok &= test_psi_dist_sample(&uniform_pos.base);
+ ok &= test_psi_dist_sample(&uniform_neg.base);
+ ok &= test_psi_dist_sample(&uniform_cross.base);
+ ok &= test_psi_dist_sample(&uniform_subnormal.base);
+ ok &= test_psi_dist_sample(&uniform_subnormal_cross.base);
+
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+static bool
+test_stochastic_logistic_impl(double mu, double sigma)
+{
+ const struct logistic dist = {
+ .base = LOGISTIC(dist),
+ .mu = mu,
+ .sigma = sigma,
+ };
+
+ /* XXX Consider some fancier logistic test. */
+ return test_psi_dist_sample(&dist.base);
+}
+
+static bool
+test_stochastic_log_logistic_impl(double alpha, double beta)
+{
+ const struct log_logistic dist = {
+ .base = LOG_LOGISTIC(dist),
+ .alpha = alpha,
+ .beta = beta,
+ };
+
+ /* XXX Consider some fancier log logistic test. */
+ return test_psi_dist_sample(&dist.base);
+}
+
+static bool
+test_stochastic_weibull_impl(double lambda, double k)
+{
+ const struct weibull dist = {
+ .base = WEIBULL(dist),
+ .lambda = lambda,
+ .k = k,
+ };
+
+/*
+ * XXX Consider applying a Tiku-Singh test:
+ *
+ * M.L. Tiku and M. Singh, `Testing the two-parameter
+ * Weibull distribution', Communications in Statistics --
+ * Theory and Methods A10(9), 1981, 907--918.
+ *https://www.tandfonline.com/doi/pdf/10.1080/03610928108828082?needAccess=true
+ */
+ return test_psi_dist_sample(&dist.base);
+}
+
+static bool
+test_stochastic_genpareto_impl(double mu, double sigma, double xi)
+{
+ const struct genpareto dist = {
+ .base = GENPARETO(dist),
+ .mu = mu,
+ .sigma = sigma,
+ .xi = xi,
+ };
+
+ /* XXX Consider some fancier GPD test. */
+ return test_psi_dist_sample(&dist.base);
+}
+
+static void
+test_stochastic_genpareto(void *arg)
+{
+ bool ok = 0;
+ bool tests_failed = true;
+ (void) arg;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok = test_stochastic_genpareto_impl(0, 1, -0.25);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(0, 1, -1e-30);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(0, 1, 0);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(0, 1, 1e-30);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(0, 1, 0.25);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(-1, 1, -0.25);
+ tt_assert(ok);
+ ok = test_stochastic_genpareto_impl(1, 2, 0.25);
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+static void
+test_stochastic_geometric(void *arg)
+{
+ bool ok = 0;
+ bool tests_failed = true;
+
+ (void) arg;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok = test_stochastic_geometric_impl(0.1);
+ tt_assert(ok);
+ ok = test_stochastic_geometric_impl(0.5);
+ tt_assert(ok);
+ ok = test_stochastic_geometric_impl(0.9);
+ tt_assert(ok);
+ ok = test_stochastic_geometric_impl(1);
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+static void
+test_stochastic_logistic(void *arg)
+{
+ bool ok = 0;
+ bool tests_failed = true;
+ (void) arg;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok = test_stochastic_logistic_impl(0, 1);
+ tt_assert(ok);
+ ok = test_stochastic_logistic_impl(0, 1e-16);
+ tt_assert(ok);
+ ok = test_stochastic_logistic_impl(1, 10);
+ tt_assert(ok);
+ ok = test_stochastic_logistic_impl(-10, 100);
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+static void
+test_stochastic_log_logistic(void *arg)
+{
+ bool ok = 0;
+ bool tests_failed = true;
+ (void) arg;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok = test_stochastic_log_logistic_impl(1, 1);
+ tt_assert(ok);
+ ok = test_stochastic_log_logistic_impl(1, 10);
+ tt_assert(ok);
+ ok = test_stochastic_log_logistic_impl(M_E, 1e-1);
+ tt_assert(ok);
+ ok = test_stochastic_log_logistic_impl(exp(-10), 1e-2);
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+static void
+test_stochastic_weibull(void *arg)
+{
+ bool ok = 0;
+ bool tests_failed = true;
+ (void) arg;
+
+ init_deterministic_rand();
+ MOCK(crypto_rand, crypto_rand_deterministic);
+
+ ok = test_stochastic_weibull_impl(1, 0.5);
+ tt_assert(ok);
+ ok = test_stochastic_weibull_impl(1, 1);
+ tt_assert(ok);
+ ok = test_stochastic_weibull_impl(1, 1.5);
+ tt_assert(ok);
+ ok = test_stochastic_weibull_impl(1, 2);
+ tt_assert(ok);
+ ok = test_stochastic_weibull_impl(10, 1);
+ tt_assert(ok);
+
+ tests_failed = false;
+
+ done:
+ if (tests_failed) {
+ dump_seed();
+ }
+ teardown_deterministic_rand();
+ UNMOCK(crypto_rand);
+}
+
+struct testcase_t prob_distr_tests[] = {
+ { "logit_logistics", test_logit_logistic, TT_FORK, NULL, NULL },
+ { "log_logistic", test_log_logistic, TT_FORK, NULL, NULL },
+ { "weibull", test_weibull, TT_FORK, NULL, NULL },
+ { "genpareto", test_genpareto, TT_FORK, NULL, NULL },
+ { "uniform_interval", test_uniform_interval, TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
+
+struct testcase_t slow_stochastic_prob_distr_tests[] = {
+ { "stochastic_genpareto", test_stochastic_genpareto, TT_FORK, NULL, NULL },
+ { "stochastic_geometric", test_stochastic_geometric, TT_FORK, NULL, NULL },
+ { "stochastic_uniform", test_stochastic_uniform, TT_FORK, NULL, NULL },
+ { "stochastic_logistic", test_stochastic_logistic, TT_FORK, NULL, NULL },
+ { "stochastic_log_logistic", test_stochastic_log_logistic, TT_FORK, NULL,
+ NULL },
+ { "stochastic_weibull", test_stochastic_weibull, TT_FORK, NULL, NULL },
+ END_OF_TESTCASES
+};
diff --git a/src/test/test_process.c b/src/test/test_process.c
index d85cb831b4..7cc01d2442 100644
--- a/src/test/test_process.c
+++ b/src/test/test_process.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_process_slow.c b/src/test/test_process_slow.c
index c28ade033c..1322d7b833 100644
--- a/src/test/test_process_slow.c
+++ b/src/test/test_process_slow.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -240,7 +240,7 @@ test_callbacks(void *arg)
tt_int_op(smartlist_len(process_data->stdout_data), OP_EQ, 12);
tt_int_op(smartlist_len(process_data->stderr_data), OP_EQ, 3);
tt_assert(process_data->did_exit);
- tt_int_op(process_data->exit_code, OP_EQ, 0);
+ tt_u64_op(process_data->exit_code, OP_EQ, 0);
/* Check stdout output. */
char argv0_expected[256];
diff --git a/src/test/test_procmon.c b/src/test/test_procmon.c
index 2c7918f580..e23578f4fd 100644
--- a/src/test/test_procmon.c
+++ b/src/test/test_procmon.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define PROCMON_PRIVATE
diff --git a/src/test/test_proto_http.c b/src/test/test_proto_http.c
index b4e8278423..f9339e8dd3 100644
--- a/src/test/test_proto_http.c
+++ b/src/test/test_proto_http.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_proto_misc.c b/src/test/test_proto_misc.c
index f7f6f69667..18669a7772 100644
--- a/src/test/test_proto_misc.c
+++ b/src/test/test_proto_misc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/test/test_protover.c b/src/test/test_protover.c
index 5f9a8b7937..63c508bd13 100644
--- a/src/test/test_protover.c
+++ b/src/test/test_protover.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define PROTOVER_PRIVATE
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index 60a044aeca..d2996f4cc3 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -23,6 +23,8 @@
#include "app/config/or_state_st.h"
+#include "test/log_test_helpers.h"
+
static void
reset_mp(managed_proxy_t *mp)
{
@@ -311,9 +313,9 @@ process_read_stdout_replacement(process_t *process, buf_t *buffer)
buf_add_string(buffer, "LOG SEVERITY=info MESSAGE=\"info msg\"\n");
buf_add_string(buffer, "LOG SEVERITY=debug MESSAGE=\"debug msg\"\n");
} else if (times_called <= 8) {
- buf_add_string(buffer, "STATUS TYPE=a K_1=a K_2=b K_3=\"foo bar\"\n");
- buf_add_string(buffer, "STATUS TYPE=b K_1=a K_2=b K_3=\"foo bar\"\n");
- buf_add_string(buffer, "STATUS TYPE=c K_1=a K_2=b K_3=\"foo bar\"\n");
+ buf_add_string(buffer, "STATUS TRANSPORT=a K_1=a K_2=b K_3=\"foo bar\"\n");
+ buf_add_string(buffer, "STATUS TRANSPORT=b K_1=a K_2=b K_3=\"foo bar\"\n");
+ buf_add_string(buffer, "STATUS TRANSPORT=c K_1=a K_2=b K_3=\"foo bar\"\n");
}
return (int)buf_datalen(buffer);
@@ -414,7 +416,10 @@ test_pt_configure_proxy(void *arg)
"650 TRANSPORT_LAUNCHED server mock5 127.0.0.1 5555\r\n");
/* Get the log message out. */
+ setup_full_capture_of_logs(LOG_ERR);
process_notify_event_stdout(mp->process);
+ expect_single_log_msg_containing("Oh noes, something bad happened");
+ teardown_capture_of_logs();
tt_int_op(controlevent_n, OP_EQ, 10);
tt_int_op(controlevent_event, OP_EQ, EVENT_PT_LOG);
@@ -445,13 +450,13 @@ test_pt_configure_proxy(void *arg)
tt_str_op(smartlist_get(controlevent_msgs, 10), OP_EQ,
"650 PT_STATUS "
- "PT=<testcase> TYPE=a K_1=a K_2=b K_3=\"foo bar\"\r\n");
+ "PT=<testcase> TRANSPORT=a K_1=a K_2=b K_3=\"foo bar\"\r\n");
tt_str_op(smartlist_get(controlevent_msgs, 11), OP_EQ,
"650 PT_STATUS "
- "PT=<testcase> TYPE=b K_1=a K_2=b K_3=\"foo bar\"\r\n");
+ "PT=<testcase> TRANSPORT=b K_1=a K_2=b K_3=\"foo bar\"\r\n");
tt_str_op(smartlist_get(controlevent_msgs, 12), OP_EQ,
"650 PT_STATUS "
- "PT=<testcase> TYPE=c K_1=a K_2=b K_3=\"foo bar\"\r\n");
+ "PT=<testcase> TRANSPORT=c K_1=a K_2=b K_3=\"foo bar\"\r\n");
{ /* check that the transport info were saved properly in the tor state */
config_line_t *transport_in_state = NULL;
@@ -475,6 +480,7 @@ test_pt_configure_proxy(void *arg)
}
done:
+ teardown_capture_of_logs();
or_state_free(dummy_state);
UNMOCK(process_read_stdout);
UNMOCK(get_or_state);
diff --git a/src/test/test_rebind.sh b/src/test/test_rebind.sh
index 498072de35..a8f07c7c1e 100755
--- a/src/test/test_rebind.sh
+++ b/src/test/test_rebind.sh
@@ -15,10 +15,15 @@ fi
exitcode=0
tmpdir=
-clean () { test -n "$tmpdir" && test -d "$tmpdir" && rm -rf "$tmpdir" || :; }
+clean () {
+ if [ -n "$tmpdir" ] && [ -d "$tmpdir" ]; then
+ rm -rf "$tmpdir"
+ fi
+}
+
trap clean EXIT HUP INT TERM
-tmpdir="`mktemp -d -t tor_rebind_test.XXXXXX`"
+tmpdir="$(mktemp -d -t tor_rebind_test.XXXXXX)"
if [ -z "$tmpdir" ]; then
echo >&2 mktemp failed
exit 2
diff --git a/src/test/test_relay.c b/src/test/test_relay.c
index 4311392be8..0b7a7be332 100644
--- a/src/test/test_relay.c
+++ b/src/test/test_relay.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define CIRCUITBUILD_PRIVATE
diff --git a/src/test/test_relaycell.c b/src/test/test_relaycell.c
index 3d3addfb9e..0623583511 100644
--- a/src/test/test_relaycell.c
+++ b/src/test/test_relaycell.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Unit tests for handling different kinds of relay cell */
diff --git a/src/test/test_relaycrypt.c b/src/test/test_relaycrypt.c
index c3cfb7d10b..fe6889e521 100644
--- a/src/test/test_relaycrypt.c
+++ b/src/test/test_relaycrypt.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_rendcache.c b/src/test/test_rendcache.c
index 2ace45d085..4f544cf21c 100644
--- a/src/test/test_rendcache.c
+++ b/src/test/test_rendcache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_replay.c b/src/test/test_replay.c
index bca3a6660a..28a508bf4d 100644
--- a/src/test/test_replay.c
+++ b/src/test/test_replay.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Tor Project, Inc. */
+/* Copyright (c) 2012-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define REPLAYCACHE_PRIVATE
diff --git a/src/test/test_rng.c b/src/test/test_rng.c
new file mode 100644
index 0000000000..c749de112a
--- /dev/null
+++ b/src/test/test_rng.c
@@ -0,0 +1,59 @@
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/*
+ * Example usage:
+ *
+ * ./src/test/test-rng --emit | dieharder -g 200 -a
+ *
+ * Remember, dieharder can tell you that your RNG is completely broken, but if
+ * your RNG is not _completely_ broken, dieharder cannot tell you whether your
+ * RNG is actually secure.
+ */
+
+#include "orconfig.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include "lib/crypt_ops/crypto_rand.h"
+
+int
+main(int argc, char **argv)
+{
+ uint8_t buf[0x123];
+
+ if (argc != 2 || strcmp(argv[1], "--emit")) {
+ fprintf(stderr, "If you want me to fill stdout with a bunch of random "
+ "bytes, you need to say --emit.\n");
+ return 1;
+ }
+
+ if (crypto_seed_rng() < 0) {
+ fprintf(stderr, "Can't seed RNG.\n");
+ return 1;
+ }
+
+#if 0
+ while (1) {
+ crypto_rand(buf, sizeof(buf));
+ if (write(1 /*stdout*/, buf, sizeof(buf)) != sizeof(buf)) {
+ fprintf(stderr, "write() failed: %s\n", strerror(errno));
+ return 1;
+ }
+ }
+#endif
+
+ crypto_fast_rng_t *rng = crypto_fast_rng_new();
+ while (1) {
+ crypto_fast_rng_getbytes(rng, buf, sizeof(buf));
+ if (write(1 /*stdout*/, buf, sizeof(buf)) != sizeof(buf)) {
+ fprintf(stderr, "write() failed: %s\n", strerror(errno));
+ return 1;
+ }
+ }
+}
diff --git a/src/test/test_router.c b/src/test/test_router.c
index 91cdd2c064..ea0ee3e84c 100644
--- a/src/test/test_router.c
+++ b/src/test/test_router.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* Copyright (c) 2017, isis agora lovecruft */
/* See LICENSE for licensing information */
diff --git a/src/test/test_routerkeys.c b/src/test/test_routerkeys.c
index f05401ba0d..727fa5660f 100644
--- a/src/test/test_routerkeys.c
+++ b/src/test/test_routerkeys.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_routerlist.c b/src/test/test_routerlist.c
index 3e1e727429..84ec8cc462 100644
--- a/src/test/test_routerlist.c
+++ b/src/test/test_routerlist.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_routerset.c b/src/test/test_routerset.c
index 86f9c0fa82..c45f0e1595 100644
--- a/src/test/test_routerset.c
+++ b/src/test/test_routerset.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTERSET_PRIVATE
diff --git a/src/test/test_scheduler.c b/src/test/test_scheduler.c
index 2d562299ab..bf9c6a49cd 100644
--- a/src/test/test_scheduler.c
+++ b/src/test/test_scheduler.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_shared_random.c b/src/test/test_shared_random.c
index 16e28afafe..617c76542e 100644
--- a/src/test/test_shared_random.c
+++ b/src/test/test_shared_random.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* Copyright (c) 2016-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define SHARED_RANDOM_PRIVATE
diff --git a/src/test/test_slow.c b/src/test/test_slow.c
index 97c2912af6..c3e7edd408 100644
--- a/src/test/test_slow.c
+++ b/src/test/test_slow.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -21,6 +21,7 @@
struct testgroup_t testgroups[] = {
{ "slow/crypto/", slow_crypto_tests },
{ "slow/process/", slow_process_tests },
+ { "slow/prob_distr/", slow_stochastic_prob_distr_tests },
END_OF_GROUPS
};
diff --git a/src/test/test_socks.c b/src/test/test_socks.c
index d430f4329b..a4a768ce84 100644
--- a/src/test/test_socks.c
+++ b/src/test/test_socks.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
@@ -479,6 +479,44 @@ test_socks_5_authenticate(void *ptr)
;
}
+/** Perform SOCKS 5 authentication with empty username/password fields.
+ * Technically this violates RfC 1929, but some client software will send
+ * this kind of message to Tor.
+ * */
+static void
+test_socks_5_authenticate_empty_user_pass(void *ptr)
+{
+ SOCKS_TEST_INIT();
+
+ /* SOCKS 5 Negotiate username/password authentication */
+ ADD_DATA(buf, "\x05\x01\x02");
+
+ tt_assert(!fetch_from_buf_socks(buf, socks,
+ get_options()->TestSocks,
+ get_options()->SafeSocks));
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(5,OP_EQ, socks->reply[0]);
+ tt_int_op(SOCKS_USER_PASS,OP_EQ, socks->reply[1]);
+ tt_int_op(5,OP_EQ, socks->socks_version);
+
+ tt_int_op(0,OP_EQ, buf_datalen(buf));
+
+ /* SOCKS 5 Send username/password auth message with empty user/pass fields */
+ ADD_DATA(buf, "\x01\x00\x00");
+ tt_assert(!fetch_from_buf_socks(buf, socks,
+ get_options()->TestSocks,
+ get_options()->SafeSocks));
+ tt_int_op(5,OP_EQ, socks->socks_version);
+ tt_int_op(2,OP_EQ, socks->replylen);
+ tt_int_op(1,OP_EQ, socks->reply[0]);
+ tt_int_op(0,OP_EQ, socks->reply[1]);
+
+ tt_int_op(0,OP_EQ, socks->usernamelen);
+ tt_int_op(0,OP_EQ, socks->passwordlen);
+
+ done:
+ ;
+}
/** Perform SOCKS 5 authentication and send data all in one go */
static void
test_socks_5_authenticate_with_data(void *ptr)
@@ -1035,6 +1073,7 @@ struct testcase_t socks_tests[] = {
SOCKSENT(5_auth_unsupported_version),
SOCKSENT(5_auth_before_negotiation),
SOCKSENT(5_authenticate),
+ SOCKSENT(5_authenticate_empty_user_pass),
SOCKSENT(5_authenticate_with_data),
SOCKSENT(5_malformed_commands),
SOCKSENT(5_bad_arguments),
diff --git a/src/test/test_status.c b/src/test/test_status.c
index 3ceba77a84..9c47469975 100644
--- a/src/test/test_status.c
+++ b/src/test/test_status.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2018, The Tor Project, Inc. */
+/* Copyright (c) 2014-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define STATUS_PRIVATE
diff --git a/src/test/test_storagedir.c b/src/test/test_storagedir.c
index 76aae7e033..24e45c7428 100644
--- a/src/test/test_storagedir.c
+++ b/src/test/test_storagedir.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Tor Project, Inc. */
+/* Copyright (c) 2017-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_switch_id.c b/src/test/test_switch_id.c
index d8a1d15e4e..baddf8d66e 100644
--- a/src/test/test_switch_id.c
+++ b/src/test/test_switch_id.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Tor Project, Inc. */
+/* Copyright (c) 2015-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_switch_id.sh b/src/test/test_switch_id.sh
index 79c44f2eb1..b13bf7602f 100755
--- a/src/test/test_switch_id.sh
+++ b/src/test/test_switch_id.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-if test "`id -u`" != '0'; then
+if test "$(id -u)" != '0'; then
echo "This test only works when run as root. Skipping." >&2
exit 77
fi
-if test "`id -u nobody`" = ""; then
+if test "$(id -u nobody)" = ""; then
echo "This test requires that your system have a 'nobody' user. Sorry." >&2
exit 1
fi
diff --git a/src/test/test_threads.c b/src/test/test_threads.c
index 2bf5026061..4a5ecc6fae 100644
--- a/src/test/test_threads.c
+++ b/src/test/test_threads.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_tortls.c b/src/test/test_tortls.c
index 79b52437f8..11e35be2fa 100644
--- a/src/test/test_tortls.c
+++ b/src/test/test_tortls.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TORTLS_PRIVATE
diff --git a/src/test/test_tortls.h b/src/test/test_tortls.h
index c997934ebc..1a8b117d0f 100644
--- a/src/test/test_tortls.h
+++ b/src/test/test_tortls.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef TEST_TORTLS_H
diff --git a/src/test/test_tortls_openssl.c b/src/test/test_tortls_openssl.c
index abe1fb7889..73041a871c 100644
--- a/src/test/test_tortls_openssl.c
+++ b/src/test/test_tortls_openssl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TORTLS_PRIVATE
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 5ffe2d6b1a..7a2708c541 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -19,6 +19,7 @@
#include "feature/client/transports.h"
#include "lib/crypt_ops/crypto_format.h"
#include "lib/crypt_ops/crypto_rand.h"
+#include "lib/defs/time.h"
#include "test/test.h"
#include "lib/memarea/memarea.h"
#include "lib/process/waitpid.h"
@@ -39,6 +40,7 @@
#include "lib/time/tvdiff.h"
#include "lib/encoding/confline.h"
#include "lib/net/socketpair.h"
+#include "lib/malloc/map_anon.h"
#ifdef HAVE_PWD_H
#include <pwd.h>
@@ -58,6 +60,12 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
#ifdef _WIN32
#include <tchar.h>
@@ -69,6 +77,28 @@
#define INFINITY_DBL ((double)INFINITY)
#define NAN_DBL ((double)NAN)
+/** Test the tor_isinf() wrapper */
+static void
+test_tor_isinf(void *arg)
+{
+ (void) arg;
+
+ tt_assert(tor_isinf(INFINITY_DBL));
+
+ tt_assert(!tor_isinf(NAN_DBL));
+ tt_assert(!tor_isinf(DBL_EPSILON));
+ tt_assert(!tor_isinf(DBL_MAX));
+ tt_assert(!tor_isinf(DBL_MIN));
+
+ tt_assert(!tor_isinf(0.0));
+ tt_assert(!tor_isinf(0.1));
+ tt_assert(!tor_isinf(3));
+ tt_assert(!tor_isinf(3.14));
+
+ done:
+ ;
+}
+
/* XXXX this is a minimal wrapper to make the unit tests compile with the
* changed tor_timegm interface. */
static time_t
@@ -404,7 +434,6 @@ test_util_time(void *arg)
/* Assume tv_usec is an unsigned integer until proven otherwise */
#define TV_USEC_MAX UINT_MAX
-#define TOR_USEC_PER_SEC 1000000
/* Overflows in the result type */
@@ -690,6 +719,12 @@ test_util_time(void *arg)
expect_single_log_msg_containing(msg); \
teardown_capture_of_logs(); \
} while (0)
+#define CHECK_POSSIBLE_EINVAL() do { \
+ if (mock_saved_log_n_entries()) { \
+ expect_single_log_msg_containing("Invalid argument"); \
+ } \
+ teardown_capture_of_logs(); \
+ } while (0)
#define CHECK_TIMEGM_ARG_OUT_OF_RANGE(msg) \
CHECK_TIMEGM_WARNING("Out-of-range argument to tor_timegm")
@@ -885,12 +920,16 @@ test_util_time(void *arg)
if (sizeof(time_t) == 4 || sizeof(time_t) == 8) {
t_res = -1*(1 << 30);
+ CAPTURE();
tor_gmtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (1970-1900) ||
b_time.tm_year == (1935-1900));
t_res = INT32_MIN;
+ CAPTURE();
tor_gmtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (1970-1900) ||
b_time.tm_year == (1901-1900));
}
@@ -900,7 +939,9 @@ test_util_time(void *arg)
/* one of the smallest tm_year values my 64 bit system supports:
* b_time.tm_year == (-292275055LL-1900LL) without clamping */
t_res = -9223372036854775LL;
+ CAPTURE();
tor_gmtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (1970-1900) ||
b_time.tm_year == (1-1900));
@@ -926,7 +967,9 @@ test_util_time(void *arg)
{
/* As above, but with localtime. */
t_res = -9223372036854775LL;
+ CAPTURE();
tor_localtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (1970-1900) ||
b_time.tm_year == (1-1900));
@@ -983,7 +1026,9 @@ test_util_time(void *arg)
/* one of the largest tm_year values my 64 bit system supports:
* b_time.tm_year == (292278994L-1900L) without clamping */
t_res = 9223372036854775LL;
+ CAPTURE();
tor_gmtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (2037-1900) ||
b_time.tm_year == (9999-1900));
@@ -1004,7 +1049,9 @@ test_util_time(void *arg)
{
/* As above but with localtime. */
t_res = 9223372036854775LL;
+ CAPTURE();
tor_localtime_r(&t_res, &b_time);
+ CHECK_POSSIBLE_EINVAL();
tt_assert(b_time.tm_year == (2037-1900) ||
b_time.tm_year == (9999-1900));
@@ -1047,7 +1094,10 @@ test_util_time(void *arg)
/* This value is out of range with 32 bit time_t, but in range for 64 bit
* time_t */
+ CAPTURE();
format_rfc1123_time(timestr, (time_t)2150000000UL);
+ CHECK_POSSIBLE_EINVAL();
+
#if SIZEOF_TIME_T == 4
#if 0
/* Wrapping around will have made it this. */
@@ -1216,7 +1266,9 @@ test_util_time(void *arg)
/* This value is out of range with 32 bit time_t, but in range for 64 bit
* time_t */
tv.tv_sec = (time_t)2150000000UL;
+ CAPTURE();
format_iso_time(timestr, (time_t)tv.tv_sec);
+ CHECK_POSSIBLE_EINVAL();
#if SIZEOF_TIME_T == 4
/* format_iso_time should indicate failure on overflow, but it doesn't yet.
* Hopefully #18480 will improve the failure semantics in this case.
@@ -1231,6 +1283,7 @@ test_util_time(void *arg)
#undef CAPTURE
#undef CHECK_TIMEGM_ARG_OUT_OF_RANGE
+#undef CHECK_POSSIBLE_EINVAL
done:
teardown_capture_of_logs();
@@ -6071,6 +6124,104 @@ test_util_log_mallinfo(void *arg)
tor_free(mem);
}
+static void
+test_util_map_anon(void *arg)
+{
+ (void)arg;
+ char *ptr = NULL;
+ size_t sz = 16384;
+
+ /* Basic checks. */
+ ptr = tor_mmap_anonymous(sz, 0);
+ tt_ptr_op(ptr, OP_NE, 0);
+ ptr[sz-1] = 3;
+ tt_int_op(ptr[0], OP_EQ, 0);
+ tt_int_op(ptr[sz-2], OP_EQ, 0);
+ tt_int_op(ptr[sz-1], OP_EQ, 3);
+
+ /* Try again, with a private (non-swappable) mapping. */
+ tor_munmap_anonymous(ptr, sz);
+ ptr = tor_mmap_anonymous(sz, ANONMAP_PRIVATE);
+ tt_ptr_op(ptr, OP_NE, 0);
+ ptr[sz-1] = 10;
+ tt_int_op(ptr[0], OP_EQ, 0);
+ tt_int_op(ptr[sz/2], OP_EQ, 0);
+ tt_int_op(ptr[sz-1], OP_EQ, 10);
+
+ /* Now let's test a drop-on-fork mapping. */
+ tor_munmap_anonymous(ptr, sz);
+ ptr = tor_mmap_anonymous(sz, ANONMAP_NOINHERIT);
+ tt_ptr_op(ptr, OP_NE, 0);
+ ptr[sz-1] = 10;
+ tt_int_op(ptr[0], OP_EQ, 0);
+ tt_int_op(ptr[sz/2], OP_EQ, 0);
+ tt_int_op(ptr[sz-1], OP_EQ, 10);
+
+ done:
+ tor_munmap_anonymous(ptr, sz);
+}
+
+static void
+test_util_map_anon_nofork(void *arg)
+{
+ (void)arg;
+#if !defined(HAVE_MADVISE) && !defined(HAVE_MINHERIT)
+ /* The operating system doesn't support this. */
+ tt_skip();
+ done:
+ ;
+#else
+ /* We have the right OS support. We're going to try marking the buffer as
+ * either zero-on-fork or as drop-on-fork, whichever is supported. Then we
+ * will fork and send a byte back to the parent process. This will either
+ * crash, or send zero. */
+
+ char *ptr = NULL;
+ size_t sz = 16384;
+ int pipefd[2] = {-1, -1};
+
+ tor_munmap_anonymous(ptr, sz);
+ ptr = tor_mmap_anonymous(sz, ANONMAP_NOINHERIT);
+ tt_ptr_op(ptr, OP_NE, 0);
+ memset(ptr, 0xd0, sz);
+
+ tt_int_op(0, OP_EQ, pipe(pipefd));
+ pid_t child = fork();
+ if (child == 0) {
+ /* We're in the child. */
+ close(pipefd[0]);
+ ssize_t r = write(pipefd[1], &ptr[sz-1], 1); /* This may crash. */
+ close(pipefd[1]);
+ if (r < 0)
+ exit(1);
+ exit(0);
+ }
+ tt_int_op(child, OP_GT, 0);
+ /* In the parent. */
+ close(pipefd[1]);
+ pipefd[1] = -1;
+ char buf[1];
+ ssize_t r = read(pipefd[0], buf, 1);
+#if defined(INHERIT_ZERO) || defined(MADV_WIPEONFORK)
+ tt_int_op((int)r, OP_EQ, 1); // child should send us a byte.
+ tt_int_op(buf[0], OP_EQ, 0);
+#else
+ tt_int_op(r, OP_LE, 0); // child said nothing; it should have crashed.
+#endif
+ int ws;
+ waitpid(child, &ws, 0);
+
+ done:
+ tor_munmap_anonymous(ptr, sz);
+ if (pipefd[0] >= 0) {
+ close(pipefd[0]);
+ }
+ if (pipefd[1] >= 0) {
+ close(pipefd[1]);
+ }
+#endif
+}
+
#define UTIL_LEGACY(name) \
{ #name, test_util_ ## name , 0, NULL, NULL }
@@ -6182,6 +6333,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(mathlog, 0),
UTIL_TEST(fraction, 0),
UTIL_TEST(weak_random, 0),
+ { "tor_isinf", test_tor_isinf, TT_FORK, NULL, NULL },
{ "socket_ipv4", test_util_socket, TT_FORK, &passthrough_setup,
(void*)"4" },
{ "socket_ipv6", test_util_socket, TT_FORK,
@@ -6207,5 +6359,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(htonll, 0),
UTIL_TEST(get_unquoted_path, 0),
UTIL_TEST(log_mallinfo, 0),
+ UTIL_TEST(map_anon, 0),
+ UTIL_TEST(map_anon_nofork, TT_SKIP /* See bug #29535 */),
END_OF_TESTCASES
};
diff --git a/src/test/test_util_format.c b/src/test/test_util_format.c
index fd57125b86..3a0b41faa5 100644
--- a/src/test/test_util_format.c
+++ b/src/test/test_util_format.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_util_process.c b/src/test/test_util_process.c
index 44c4da9169..4d04eb6dfc 100644
--- a/src/test/test_util_process.c
+++ b/src/test/test_util_process.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define UTIL_PROCESS_PRIVATE
diff --git a/src/test/test_voting_flags.c b/src/test/test_voting_flags.c
index 740b96b4c0..5c9eebd00e 100644
--- a/src/test/test_voting_flags.c
+++ b/src/test/test_voting_flags.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_voting_schedule.c b/src/test/test_voting_schedule.c
index c3a581cf21..ba4d53a4ae 100644
--- a/src/test/test_voting_schedule.c
+++ b/src/test/test_voting_schedule.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Tor Project, Inc. */
+/* Copyright (c) 2018-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_workqueue.c b/src/test/test_workqueue.c
index 28fbd6fb9f..c58634da5c 100644
--- a/src/test/test_workqueue.c
+++ b/src/test/test_workqueue.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
diff --git a/src/test/test_workqueue_cancel.sh b/src/test/test_workqueue_cancel.sh
index f7c663171e..e50b884f26 100755
--- a/src/test/test_workqueue_cancel.sh
+++ b/src/test/test_workqueue_cancel.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue -C 1
+"${builddir:-.}/src/test/test_workqueue" -C 1
diff --git a/src/test/test_workqueue_efd.sh b/src/test/test_workqueue_efd.sh
index 4d89396819..592841fc91 100755
--- a/src/test/test_workqueue_efd.sh
+++ b/src/test/test_workqueue_efd.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue \
+"${builddir:-.}/src/test/test_workqueue" \
--no-eventfd2 --no-pipe2 --no-pipe --no-socketpair
diff --git a/src/test/test_workqueue_efd2.sh b/src/test/test_workqueue_efd2.sh
index 7cfff45ff3..4cf1b76cbe 100755
--- a/src/test/test_workqueue_efd2.sh
+++ b/src/test/test_workqueue_efd2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue \
+"${builddir:-.}/src/test/test_workqueue" \
--no-eventfd --no-pipe2 --no-pipe --no-socketpair
diff --git a/src/test/test_workqueue_pipe.sh b/src/test/test_workqueue_pipe.sh
index afcef87853..fc3ef34c6c 100755
--- a/src/test/test_workqueue_pipe.sh
+++ b/src/test/test_workqueue_pipe.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue \
+"${builddir:-.}/src/test/test_workqueue" \
--no-eventfd2 --no-eventfd --no-pipe2 --no-socketpair
diff --git a/src/test/test_workqueue_pipe2.sh b/src/test/test_workqueue_pipe2.sh
index a20a1427e0..7f19ea880d 100755
--- a/src/test/test_workqueue_pipe2.sh
+++ b/src/test/test_workqueue_pipe2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue \
+"${builddir:-.}/src/test/test_workqueue" \
--no-eventfd2 --no-eventfd --no-pipe --no-socketpair
diff --git a/src/test/test_workqueue_socketpair.sh b/src/test/test_workqueue_socketpair.sh
index 76af79746d..1ee1776447 100755
--- a/src/test/test_workqueue_socketpair.sh
+++ b/src/test/test_workqueue_socketpair.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-${builddir:-.}/src/test/test_workqueue \
+"${builddir:-.}/src/test/test_workqueue" \
--no-eventfd2 --no-eventfd --no-pipe2 --no-pipe
diff --git a/src/test/test_x509.c b/src/test/test_x509.c
index 9128958492..792849ae4b 100644
--- a/src/test/test_x509.c
+++ b/src/test/test_x509.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2018, The Tor Project, Inc. */
+/* Copyright (c) 2010-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define TOR_X509_PRIVATE
diff --git a/src/test/testing_common.c b/src/test/testing_common.c
index 6d2db28f15..8fc8ef7830 100644
--- a/src/test/testing_common.c
+++ b/src/test/testing_common.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -241,6 +241,15 @@ tinytest_postfork(void)
init_pregenerated_keys();
}
+static void
+log_callback_failure(int severity, uint32_t domain, const char *msg)
+{
+ (void)msg;
+ if (severity == LOG_ERR || (domain & LD_BUG)) {
+ tinytest_set_test_failed_();
+ }
+}
+
/** Main entry point for unit test code: parse the command line, and run
* some unit tests. */
int
@@ -280,6 +289,7 @@ main(int c, const char **v)
c = i_out;
{
+ /* setup logs to stdout */
log_severity_list_t s;
memset(&s, 0, sizeof(s));
set_log_severity_config(loglevel, LOG_ERR, &s);
@@ -287,6 +297,14 @@ main(int c, const char **v)
s.masks[LOG_WARN-LOG_ERR] |= LD_BUG;
add_stream_log(&s, "", fileno(stdout));
}
+ {
+ /* Setup logs that cause failure. */
+ log_severity_list_t s;
+ memset(&s, 0, sizeof(s));
+ set_log_severity_config(LOG_ERR, LOG_ERR, &s);
+ s.masks[LOG_WARN-LOG_ERR] |= LD_BUG;
+ add_callback_log(&s, log_callback_failure);
+ }
flush_log_messages_from_startup();
init_protocol_warning_severity_level();
diff --git a/src/test/testing_rsakeys.c b/src/test/testing_rsakeys.c
index c8062b82d5..0f22d4e01b 100644
--- a/src/test/testing_rsakeys.c
+++ b/src/test/testing_rsakeys.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "lib/crypt_ops/crypto_rand.h"
diff --git a/src/test/zero_length_keys.sh b/src/test/zero_length_keys.sh
index 3c61f8d465..4069148e0b 100755
--- a/src/test/zero_length_keys.sh
+++ b/src/test/zero_length_keys.sh
@@ -19,7 +19,7 @@
# 3: a command failed - the test could not be completed
#
-if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
+if [ $# -eq 0 ] || [ ! -f "${1}" ] || [ ! -x "${1}" ]; then
echo "Usage: ${0} PATH_TO_TOR [-z|-d|-e]"
exit 1
elif [ $# -eq 1 ]; then
@@ -31,7 +31,7 @@ else #[$# -gt 1 ]; then
shift
fi
-DATA_DIR=`mktemp -d -t tor_zero_length_keys.XXXXXX`
+DATA_DIR=$(mktemp -d -t tor_zero_length_keys.XXXXXX)
if [ -z "$DATA_DIR" ]; then
echo "Failure: mktemp invocation returned empty string" >&2
exit 3
@@ -40,7 +40,7 @@ if [ ! -d "$DATA_DIR" ]; then
echo "Failure: mktemp invocation result doesn't point to directory" >&2
exit 3
fi
-trap "rm -rf '$DATA_DIR'" 0
+trap 'rm -rf "$DATA_DIR"' 0
touch "$DATA_DIR"/empty_torrc
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index 238564125a..25113420df 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/tools/tor-print-ed-signing-cert.c b/src/tools/tor-print-ed-signing-cert.c
index 9bb4db0a6e..1f1a01ab5c 100644
--- a/src/tools/tor-print-ed-signing-cert.c
+++ b/src/tools/tor-print-ed-signing-cert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include <errno.h>
diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c
index 803ed26b3b..98b3a4a74c 100644
--- a/src/tools/tor-resolve.c
+++ b/src/tools/tor-resolve.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
- * Copyright (c) 2007-2018, The Tor Project, Inc.
+ * Copyright (c) 2007-2019, The Tor Project, Inc.
*/
/* See LICENSE for licensing information */
diff --git a/src/tools/tor_runner.c b/src/tools/tor_runner.c
index d962e5abc7..3c6ade91d9 100644
--- a/src/tools/tor_runner.c
+++ b/src/tools/tor_runner.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
+ * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/trunnel/circpad_negotiation.c b/src/trunnel/circpad_negotiation.c
new file mode 100644
index 0000000000..236be06ada
--- /dev/null
+++ b/src/trunnel/circpad_negotiation.c
@@ -0,0 +1,549 @@
+/* circpad_negotiation.c -- generated by Trunnel v1.5.2.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#include <stdlib.h>
+#include "trunnel-impl.h"
+
+#include "circpad_negotiation.h"
+
+#define TRUNNEL_SET_ERROR_CODE(obj) \
+ do { \
+ (obj)->trunnel_error_code_ = 1; \
+ } while (0)
+
+#if defined(__COVERITY__) || defined(__clang_analyzer__)
+/* If we're running a static analysis tool, we don't want it to complain
+ * that some of our remaining-bytes checks are dead-code. */
+int circpadnegotiation_deadcode_dummy__ = 0;
+#define OR_DEADCODE_DUMMY || circpadnegotiation_deadcode_dummy__
+#else
+#define OR_DEADCODE_DUMMY
+#endif
+
+#define CHECK_REMAINING(nbytes, label) \
+ do { \
+ if (remaining < (nbytes) OR_DEADCODE_DUMMY) { \
+ goto label; \
+ } \
+ } while (0)
+
+circpad_negotiate_t *
+circpad_negotiate_new(void)
+{
+ circpad_negotiate_t *val = trunnel_calloc(1, sizeof(circpad_negotiate_t));
+ if (NULL == val)
+ return NULL;
+ val->command = CIRCPAD_COMMAND_START;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+circpad_negotiate_clear(circpad_negotiate_t *obj)
+{
+ (void) obj;
+}
+
+void
+circpad_negotiate_free(circpad_negotiate_t *obj)
+{
+ if (obj == NULL)
+ return;
+ circpad_negotiate_clear(obj);
+ trunnel_memwipe(obj, sizeof(circpad_negotiate_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+circpad_negotiate_get_version(const circpad_negotiate_t *inp)
+{
+ return inp->version;
+}
+int
+circpad_negotiate_set_version(circpad_negotiate_t *inp, uint8_t val)
+{
+ if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+circpad_negotiate_get_command(const circpad_negotiate_t *inp)
+{
+ return inp->command;
+}
+int
+circpad_negotiate_set_command(circpad_negotiate_t *inp, uint8_t val)
+{
+ if (! ((val == CIRCPAD_COMMAND_START || val == CIRCPAD_COMMAND_STOP))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->command = val;
+ return 0;
+}
+uint8_t
+circpad_negotiate_get_machine_type(const circpad_negotiate_t *inp)
+{
+ return inp->machine_type;
+}
+int
+circpad_negotiate_set_machine_type(circpad_negotiate_t *inp, uint8_t val)
+{
+ inp->machine_type = val;
+ return 0;
+}
+uint8_t
+circpad_negotiate_get_echo_request(const circpad_negotiate_t *inp)
+{
+ return inp->echo_request;
+}
+int
+circpad_negotiate_set_echo_request(circpad_negotiate_t *inp, uint8_t val)
+{
+ if (! ((val == 0 || val == 1))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->echo_request = val;
+ return 0;
+}
+const char *
+circpad_negotiate_check(const circpad_negotiate_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 0))
+ return "Integer out of bounds";
+ if (! (obj->command == CIRCPAD_COMMAND_START || obj->command == CIRCPAD_COMMAND_STOP))
+ return "Integer out of bounds";
+ if (! (obj->echo_request == 0 || obj->echo_request == 1))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+circpad_negotiate_encoded_len(const circpad_negotiate_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != circpad_negotiate_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [0] */
+ result += 1;
+
+ /* Length of u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ result += 1;
+
+ /* Length of u8 machine_type */
+ result += 1;
+
+ /* Length of u8 echo_request IN [0, 1] */
+ result += 1;
+ return result;
+}
+int
+circpad_negotiate_clear_errors(circpad_negotiate_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+circpad_negotiate_encode(uint8_t *output, const size_t avail, const circpad_negotiate_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = circpad_negotiate_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = circpad_negotiate_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [0] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->command));
+ written += 1; ptr += 1;
+
+ /* Encode u8 machine_type */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->machine_type));
+ written += 1; ptr += 1;
+
+ /* Encode u8 echo_request IN [0, 1] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->echo_request));
+ written += 1; ptr += 1;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As circpad_negotiate_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+circpad_negotiate_parse_into(circpad_negotiate_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [0] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 0))
+ goto fail;
+
+ /* Parse u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ CHECK_REMAINING(1, truncated);
+ obj->command = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->command == CIRCPAD_COMMAND_START || obj->command == CIRCPAD_COMMAND_STOP))
+ goto fail;
+
+ /* Parse u8 machine_type */
+ CHECK_REMAINING(1, truncated);
+ obj->machine_type = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse u8 echo_request IN [0, 1] */
+ CHECK_REMAINING(1, truncated);
+ obj->echo_request = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->echo_request == 0 || obj->echo_request == 1))
+ goto fail;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+circpad_negotiate_parse(circpad_negotiate_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = circpad_negotiate_new();
+ if (NULL == *output)
+ return -1;
+ result = circpad_negotiate_parse_into(*output, input, len_in);
+ if (result < 0) {
+ circpad_negotiate_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+circpad_negotiated_t *
+circpad_negotiated_new(void)
+{
+ circpad_negotiated_t *val = trunnel_calloc(1, sizeof(circpad_negotiated_t));
+ if (NULL == val)
+ return NULL;
+ val->command = CIRCPAD_COMMAND_START;
+ val->response = CIRCPAD_RESPONSE_ERR;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+circpad_negotiated_clear(circpad_negotiated_t *obj)
+{
+ (void) obj;
+}
+
+void
+circpad_negotiated_free(circpad_negotiated_t *obj)
+{
+ if (obj == NULL)
+ return;
+ circpad_negotiated_clear(obj);
+ trunnel_memwipe(obj, sizeof(circpad_negotiated_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+circpad_negotiated_get_version(const circpad_negotiated_t *inp)
+{
+ return inp->version;
+}
+int
+circpad_negotiated_set_version(circpad_negotiated_t *inp, uint8_t val)
+{
+ if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+circpad_negotiated_get_command(const circpad_negotiated_t *inp)
+{
+ return inp->command;
+}
+int
+circpad_negotiated_set_command(circpad_negotiated_t *inp, uint8_t val)
+{
+ if (! ((val == CIRCPAD_COMMAND_START || val == CIRCPAD_COMMAND_STOP))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->command = val;
+ return 0;
+}
+uint8_t
+circpad_negotiated_get_response(const circpad_negotiated_t *inp)
+{
+ return inp->response;
+}
+int
+circpad_negotiated_set_response(circpad_negotiated_t *inp, uint8_t val)
+{
+ if (! ((val == CIRCPAD_RESPONSE_ERR || val == CIRCPAD_RESPONSE_OK))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->response = val;
+ return 0;
+}
+uint8_t
+circpad_negotiated_get_machine_type(const circpad_negotiated_t *inp)
+{
+ return inp->machine_type;
+}
+int
+circpad_negotiated_set_machine_type(circpad_negotiated_t *inp, uint8_t val)
+{
+ inp->machine_type = val;
+ return 0;
+}
+const char *
+circpad_negotiated_check(const circpad_negotiated_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 0))
+ return "Integer out of bounds";
+ if (! (obj->command == CIRCPAD_COMMAND_START || obj->command == CIRCPAD_COMMAND_STOP))
+ return "Integer out of bounds";
+ if (! (obj->response == CIRCPAD_RESPONSE_ERR || obj->response == CIRCPAD_RESPONSE_OK))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+circpad_negotiated_encoded_len(const circpad_negotiated_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != circpad_negotiated_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [0] */
+ result += 1;
+
+ /* Length of u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ result += 1;
+
+ /* Length of u8 response IN [CIRCPAD_RESPONSE_ERR, CIRCPAD_RESPONSE_OK] */
+ result += 1;
+
+ /* Length of u8 machine_type */
+ result += 1;
+ return result;
+}
+int
+circpad_negotiated_clear_errors(circpad_negotiated_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+circpad_negotiated_encode(uint8_t *output, const size_t avail, const circpad_negotiated_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = circpad_negotiated_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = circpad_negotiated_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [0] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->command));
+ written += 1; ptr += 1;
+
+ /* Encode u8 response IN [CIRCPAD_RESPONSE_ERR, CIRCPAD_RESPONSE_OK] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->response));
+ written += 1; ptr += 1;
+
+ /* Encode u8 machine_type */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->machine_type));
+ written += 1; ptr += 1;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As circpad_negotiated_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+circpad_negotiated_parse_into(circpad_negotiated_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [0] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 0))
+ goto fail;
+
+ /* Parse u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP] */
+ CHECK_REMAINING(1, truncated);
+ obj->command = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->command == CIRCPAD_COMMAND_START || obj->command == CIRCPAD_COMMAND_STOP))
+ goto fail;
+
+ /* Parse u8 response IN [CIRCPAD_RESPONSE_ERR, CIRCPAD_RESPONSE_OK] */
+ CHECK_REMAINING(1, truncated);
+ obj->response = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->response == CIRCPAD_RESPONSE_ERR || obj->response == CIRCPAD_RESPONSE_OK))
+ goto fail;
+
+ /* Parse u8 machine_type */
+ CHECK_REMAINING(1, truncated);
+ obj->machine_type = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+circpad_negotiated_parse(circpad_negotiated_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = circpad_negotiated_new();
+ if (NULL == *output)
+ return -1;
+ result = circpad_negotiated_parse_into(*output, input, len_in);
+ if (result < 0) {
+ circpad_negotiated_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
diff --git a/src/trunnel/circpad_negotiation.h b/src/trunnel/circpad_negotiation.h
new file mode 100644
index 0000000000..d09080dc16
--- /dev/null
+++ b/src/trunnel/circpad_negotiation.h
@@ -0,0 +1,195 @@
+/* circpad_negotiation.h -- generated by Trunnel v1.5.2.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#ifndef TRUNNEL_CIRCPAD_NEGOTIATION_H
+#define TRUNNEL_CIRCPAD_NEGOTIATION_H
+
+#include <stdint.h>
+#include "trunnel.h"
+
+#define CIRCPAD_COMMAND_STOP 1
+#define CIRCPAD_COMMAND_START 2
+#define CIRCPAD_RESPONSE_OK 1
+#define CIRCPAD_RESPONSE_ERR 2
+#define CIRCPAD_MACHINE_CIRC_SETUP 1
+/**
+ * This command tells the relay to alter its min and max netflow
+ * timeout range values, and send padding at that rate (resuming
+ * if stopped). */
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CIRCPAD_NEGOTIATE)
+struct circpad_negotiate_st {
+ uint8_t version;
+ uint8_t command;
+ /** Machine type is left unbounded because we can specify
+ * new machines in the consensus */
+ uint8_t machine_type;
+ /** If true, send a relay_drop reply.. */
+ uint8_t echo_request;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct circpad_negotiate_st circpad_negotiate_t;
+/**
+ * This command tells the relay to alter its min and max netflow
+ * timeout range values, and send padding at that rate (resuming
+ * if stopped). */
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CIRCPAD_NEGOTIATED)
+struct circpad_negotiated_st {
+ uint8_t version;
+ uint8_t command;
+ uint8_t response;
+ /** Machine type is left unbounded because we can specify
+ * new machines in the consensus */
+ uint8_t machine_type;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct circpad_negotiated_st circpad_negotiated_t;
+/** Return a newly allocated circpad_negotiate with all elements set
+ * to zero.
+ */
+circpad_negotiate_t *circpad_negotiate_new(void);
+/** Release all storage held by the circpad_negotiate in 'victim'. (Do
+ * nothing if 'victim' is NULL.)
+ */
+void circpad_negotiate_free(circpad_negotiate_t *victim);
+/** Try to parse a circpad_negotiate from the buffer in 'input', using
+ * up to 'len_in' bytes from the input buffer. On success, return the
+ * number of bytes consumed and set *output to the newly allocated
+ * circpad_negotiate_t. On failure, return -2 if the input appears
+ * truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t circpad_negotiate_parse(circpad_negotiate_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * circpad_negotiate in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t circpad_negotiate_encoded_len(const circpad_negotiate_t *obj);
+/** Try to encode the circpad_negotiate from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t circpad_negotiate_encode(uint8_t *output, size_t avail, const circpad_negotiate_t *input);
+/** Check whether the internal state of the circpad_negotiate in 'obj'
+ * is consistent. Return NULL if it is, and a short message if it is
+ * not.
+ */
+const char *circpad_negotiate_check(const circpad_negotiate_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int circpad_negotiate_clear_errors(circpad_negotiate_t *obj);
+/** Return the value of the version field of the circpad_negotiate_t
+ * in 'inp'
+ */
+uint8_t circpad_negotiate_get_version(const circpad_negotiate_t *inp);
+/** Set the value of the version field of the circpad_negotiate_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiate_set_version(circpad_negotiate_t *inp, uint8_t val);
+/** Return the value of the command field of the circpad_negotiate_t
+ * in 'inp'
+ */
+uint8_t circpad_negotiate_get_command(const circpad_negotiate_t *inp);
+/** Set the value of the command field of the circpad_negotiate_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiate_set_command(circpad_negotiate_t *inp, uint8_t val);
+/** Return the value of the machine_type field of the
+ * circpad_negotiate_t in 'inp'
+ */
+uint8_t circpad_negotiate_get_machine_type(const circpad_negotiate_t *inp);
+/** Set the value of the machine_type field of the circpad_negotiate_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiate_set_machine_type(circpad_negotiate_t *inp, uint8_t val);
+/** Return the value of the echo_request field of the
+ * circpad_negotiate_t in 'inp'
+ */
+uint8_t circpad_negotiate_get_echo_request(const circpad_negotiate_t *inp);
+/** Set the value of the echo_request field of the circpad_negotiate_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiate_set_echo_request(circpad_negotiate_t *inp, uint8_t val);
+/** Return a newly allocated circpad_negotiated with all elements set
+ * to zero.
+ */
+circpad_negotiated_t *circpad_negotiated_new(void);
+/** Release all storage held by the circpad_negotiated in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void circpad_negotiated_free(circpad_negotiated_t *victim);
+/** Try to parse a circpad_negotiated from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated circpad_negotiated_t. On failure, return -2 if the input
+ * appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t circpad_negotiated_parse(circpad_negotiated_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * circpad_negotiated in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t circpad_negotiated_encoded_len(const circpad_negotiated_t *obj);
+/** Try to encode the circpad_negotiated from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t circpad_negotiated_encode(uint8_t *output, size_t avail, const circpad_negotiated_t *input);
+/** Check whether the internal state of the circpad_negotiated in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *circpad_negotiated_check(const circpad_negotiated_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int circpad_negotiated_clear_errors(circpad_negotiated_t *obj);
+/** Return the value of the version field of the circpad_negotiated_t
+ * in 'inp'
+ */
+uint8_t circpad_negotiated_get_version(const circpad_negotiated_t *inp);
+/** Set the value of the version field of the circpad_negotiated_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiated_set_version(circpad_negotiated_t *inp, uint8_t val);
+/** Return the value of the command field of the circpad_negotiated_t
+ * in 'inp'
+ */
+uint8_t circpad_negotiated_get_command(const circpad_negotiated_t *inp);
+/** Set the value of the command field of the circpad_negotiated_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiated_set_command(circpad_negotiated_t *inp, uint8_t val);
+/** Return the value of the response field of the circpad_negotiated_t
+ * in 'inp'
+ */
+uint8_t circpad_negotiated_get_response(const circpad_negotiated_t *inp);
+/** Set the value of the response field of the circpad_negotiated_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int circpad_negotiated_set_response(circpad_negotiated_t *inp, uint8_t val);
+/** Return the value of the machine_type field of the
+ * circpad_negotiated_t in 'inp'
+ */
+uint8_t circpad_negotiated_get_machine_type(const circpad_negotiated_t *inp);
+/** Set the value of the machine_type field of the
+ * circpad_negotiated_t in 'inp' to 'val'. Return 0 on success; return
+ * -1 and set the error code on 'inp' on failure.
+ */
+int circpad_negotiated_set_machine_type(circpad_negotiated_t *inp, uint8_t val);
+
+
+#endif
diff --git a/src/trunnel/circpad_negotiation.trunnel b/src/trunnel/circpad_negotiation.trunnel
new file mode 100644
index 0000000000..abbc929cc5
--- /dev/null
+++ b/src/trunnel/circpad_negotiation.trunnel
@@ -0,0 +1,44 @@
+/* These are the padding negotiation commands */
+const CIRCPAD_COMMAND_STOP = 1;
+const CIRCPAD_COMMAND_START = 2;
+
+/* Responses to commands */
+const CIRCPAD_RESPONSE_OK = 1;
+const CIRCPAD_RESPONSE_ERR = 2;
+
+/* Built-in machine types */
+
+/* 1) Machine that obscures circuit setup */
+const CIRCPAD_MACHINE_CIRC_SETUP = 1;
+
+/**
+ * This command tells the relay to alter its min and max netflow
+ * timeout range values, and send padding at that rate (resuming
+ * if stopped). */
+struct circpad_negotiate {
+ u8 version IN [0];
+ u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP];
+
+ /** Machine type is left unbounded because we can specify
+ * new machines in the consensus */
+ u8 machine_type;
+
+ /** If true, send a relay_drop reply.. */
+ // FIXME-MP-AP: Maybe we just say to transition to the first state
+ // here instead.. Also what about delay before responding?
+ u8 echo_request IN [0,1];
+};
+
+/**
+ * This command tells the relay to alter its min and max netflow
+ * timeout range values, and send padding at that rate (resuming
+ * if stopped). */
+struct circpad_negotiated {
+ u8 version IN [0];
+ u8 command IN [CIRCPAD_COMMAND_START, CIRCPAD_COMMAND_STOP];
+ u8 response IN [CIRCPAD_RESPONSE_OK, CIRCPAD_RESPONSE_ERR];
+
+ /** Machine type is left unbounded because we can specify
+ * new machines in the consensus */
+ u8 machine_type;
+};
diff --git a/src/trunnel/include.am b/src/trunnel/include.am
index b5db0609a8..4f4f1d3624 100644
--- a/src/trunnel/include.am
+++ b/src/trunnel/include.am
@@ -11,7 +11,8 @@ TRUNNELINPUTS = \
src/trunnel/link_handshake.trunnel \
src/trunnel/pwbox.trunnel \
src/trunnel/channelpadding_negotiation.trunnel \
- src/trunner/socks5.trunnel
+ src/trunnel/socks5.trunnel \
+ src/trunnel/circpad_negotiation.trunnel
TRUNNELSOURCES = \
src/ext/trunnel/trunnel.c \
@@ -23,8 +24,9 @@ TRUNNELSOURCES = \
src/trunnel/hs/cell_introduce1.c \
src/trunnel/hs/cell_rendezvous.c \
src/trunnel/channelpadding_negotiation.c \
- src/trunnel/socks5.c \
- src/trunnel/netinfo.c
+ src/trunnel/socks5.c \
+ src/trunnel/netinfo.c \
+ src/trunnel/circpad_negotiation.c
TRUNNELHEADERS = \
src/ext/trunnel/trunnel.h \
@@ -39,7 +41,8 @@ TRUNNELHEADERS = \
src/trunnel/hs/cell_rendezvous.h \
src/trunnel/channelpadding_negotiation.h \
src/trunnel/socks5.h \
- src/trunnel/netinfo.h
+ src/trunnel/netinfo.h \
+ src/trunnel/circpad_negotiation.h
src_trunnel_libor_trunnel_a_SOURCES = $(TRUNNELSOURCES)
src_trunnel_libor_trunnel_a_CPPFLAGS = \
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index cfc3bc9e9e..892531ceb4 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -218,7 +218,7 @@
#define USING_TWOS_COMPLEMENT
/* Version number of package */
-#define VERSION "0.4.0.0-alpha-dev"
+#define VERSION "0.4.1.0-alpha-dev"